ContextConfiguration注释异常

时间:2015-09-23 14:28:45

标签: java spring

我有一个非常简单的Spring Boot项目,它刚刚从Spring Boot 1.2.5.RELEASE升级到Spring Boot 1.3.0.M5(然后依赖于Spring 4.2.0.RELEASE),现在我的项目无法编译。

项目:

@Configuration
@ComponentScan
@EnableAutoConfiguration
@EnableEncryptableProperties
public class MyApp extends WebMvcConfigurerAdapter {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}

测试未通过编译(我唯一的测试ATM):

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {MyApp.class})
@DirtiesContext
public class MyDAO_DataTest {

    @Autowired
    MyDAO dao;

    @Test
    public void whenDoingAtest() throws Exception {
        //...
    }
}

当我尝试编译时,它在我的测试文件上失败,说:

  

org.springframework.core.annotation.AnnotationConfigurationException:在[class com.example.MyDAO_DataTest]中声明的注释[org.springframework.test.context.ContextConfiguration]的AnnotationAttributes中,属性[locations]及其别名[value]是使用[{}]和[{class com.example.MyApp}]的值声明,但只允许一个声明。

我找到了feature that's the origin of the exception,但我真的不明白我能做些什么。

更新我"已修复"更改此行的问题:

@SpringApplicationConfiguration(classes = {MyApp.class})

......对此:

@ContextConfiguration(classes = {MyApp.class},
                      loader = SpringApplicationContextLoader.class)

有效地解决问题并允许自己工作,但我不明白为什么必须这样做。 @SpringApplicationConfiguration被描述为 Similar to the standard ContextConfiguration but uses Spring Boot's SpringApplicationContextLoader ,那么这笔交易是什么?

1 个答案:

答案 0 :(得分:0)

  

Spring Boot 1.3.0.M5(然后依赖于Spring 4.2.0.RELEASE)

遗憾的是,错误:Spring Boot 1.3.0.M5明确依赖于Spring Framework 4.2.1,而不是4.2.0。

您看到的异常已在Spring Framework 4.2.1中得到解决,特别是在以下问题中。

Spring Boot 1.3.0 M5中对@SpringApplicationConfiguration所做的更改需要 Spring Framework 4.2.1。有关详细信息,请参阅以下问题。

因此,确保您针对Spring Framework 4.2.1运行应该可以解决您的问题。

此致

萨姆