详细错误
Caused by: java.lang.IllegalStateException: Duplicate spring bean id iVssLocationService
at com.alibaba.dubbo.config.spring.schema.DubboBeanDefinitionParser.parse(DubboBeanDefinitionParser.java:94)
at com.alibaba.dubbo.config.spring.schema.DubboBeanDefinitionParser.parse(DubboBeanDefinitionParser.java:404)
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1366)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1352)
问题描述
在写单元测试的时候,应用无法启动,但正常启动应用是可以成功的。我的单元测试启动类是在~/test/java/……下,单元测试类统一继承BaseTest类,该类配置了@SpringBootTest(classes = SpringBootAppTest.class)。
原因分析
由于SpringBootAppTest.java 和SpringBootApp.java 都会触发@ImportResource("classpath:dubbo/dubbo-consum.xml") 加载dubbo配置文件。导致dubbo内的bean被重复加载两次,从而发生错误。
解决办法
在单元测试启动类上配置扫描包路径,同时把SpringBootApp.java排除在外,不要扫描到该类。就能避免该问题。