我有一个非常简单的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 ,那么这笔交易是什么?
答案 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运行应该可以解决您的问题。
此致
萨姆