我有两个班级:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class BaseConfiguratorServiceTest {
@Configuration
@ImportResource("/application-context.xml")
static class ContextConfiguration {
@Bean
public BaseConfiguratorService baseConfiguratorService() {
return new BaseConfiguratorService();
}
}
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class AnotherTest {
@Configuration
@ImportResource("/application-context.xml")
static class AnotherConfiguration {
@Bean
public BaseConfiguratorService baseConfiguratorService() {
return new BaseConfiguratorService();
}
}
}
我收到此错误消息:
Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Only one AsyncAnnotationBeanPostProcessor may exist within the context.
Offending resource: class path resource [application-context.xml]
我不知道推理。我一次运行一个测试:
mvn test -Dtest = BaseConfiguraionTest
然后由于第二个类上下文没有在运行时加载,为什么spring应该关心另一个类是否有这个注释?除了spring怎么知道是否还有另一个用@Configuration注释的类。
答案 0 :(得分:0)
我遇到了和你一样的问题,虽然我还不确定为什么会这样,但我发现这个答案解决了我(我们)的问题:https://stackoverflow.com/a/39307385/1410035
我正在使用@WebAppConfiguration
(答案所针对的地址),但希望它仍适用于您的情况。
我在Spring 4.2.x FWIW上。此外,该链接答案来自相关Spring代码的作者,因此我们可能会相信它。