2015-09-23 5 views
1

У меня есть довольно простой проект Spring Boot, который был только что обновлен от до Spring Boot 1.3.0.M5 (который тогда полагается на Spring 4.2.0.RELEASE), и теперь мой проект не будет компилироваться.Исключение аннотации контекста ContextConfiguration

Проект:

@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: в AnnotationAttributes для аннотации [org.springframework.test.context.ContextC onfiguration], объявленный в [class com.example.MyDAO_DataTest], атрибут [местоположения] и его псевдоним [значение] объявлены со значениями [{}] и [{class com.example.MyApp}], но разрешено только одно объявление ,

Я нашел feature that's the origin of the exception, но я не совсем понимаю, что я могу с этим поделать.

Update I "фиксированный" вопрос, изменив эту строку:

@SpringApplicationConfiguration(classes = {MyApp.class}) 

... к этому:

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

эффективно работать вокруг этого вопроса и позволяя себе работать, но Я не понимаю, зачем мне это нужно. @SpringApplicationConfiguration описывается как Similar to the standard ContextConfiguration but uses Spring Boot's SpringApplicationContextLoader, так что же сделка?

+0

Просто дружеское обратите внимание, что если вы найдете один из ответов на ваш вопрос приемлемых, не стесняйтесь [принять его] (http://stackoverflow.com/help/accepted -answer), если хотите. –

ответ

0

Spring Загрузочный 1.3.0.M5 (который затем полагается на Spring 4.2.0.RELEASE)

То есть, к сожалению, неверно: Spring Загрузочный 1.3.0.M5 явно зависит от Spring Framework 4.2. 1, а не 4.2.0.

Исключение, которое вы видите, было рассмотрено в Spring Framework 4.2.1, в частности, в следующих проблемах.

И изменения, сделанные в @SpringApplicationConfiguration весной загрузки 1.3.0 M5 требуют Spring Framework 4.2.1. Подробнее см. Следующий вопрос.

Таким образом, гарантируя, что вы работаете против Spring Framework 4.2.1 должно решить вашу проблему.

С уважением,

Sam

Смежные вопросы