这是错误提示:Duplicate application configs:
最近在eclipse上搭建dubbo+spring+mybatis。provider启动是这样的。用注释段启动没问题,非注释段启动就报这个错了。
public class DemoProviderTest {
// public static void main(String[] args) throws Exception {
// ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
// new String[] {"META-INF/spring/serviceApplicationContext.xml"});
// context.start();
//
// System.out.println("Hello!");
//
// System.in.read(); // press any key to exit
// context.close();
// }
public static void main(String[] args) throws Exception {
com.alibaba.dubbo.container.Main.main(args);
}
}
在日志里有这么一段,相当于加载了两次。
Pre-instantiating singletons in @16eabae: defining beans [com.alibaba.dubbo.config.spring.AnnotationBean,demo-provider,com.alibaba.dubbo.config.ConsumerConfig,com.alibaba.dubbo.config.RegistryConfig,dubbo,org.springframework.context.support.PropertySourcesPlaceholderConfigurer#0,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.event.internalEventListenerProcessor,org.springframework.context.event.internalEventListenerFactory,com.alibaba.dubbo.config.spring.AnnotationBean2,demo-provider2,com.alibaba.dubbo.config.ConsumerConfig2,com.alibaba.dubbo.config.RegistryConfig2,dubbo2,org.springframework.context.support.PropertySourcesPlaceholderConfigurer#1,dataSource_mysql,sqlSessionFactory,org.mybatis.spring.mapper.
我的pom文件build段是这样的。再次说明,是用dubbo的main方法启动才出现的这个错误。
${project.build.directory}/lib
原因:dubbo相关的xml资源被 了两次,在这里。
然后在serviceApplicationContext.xml是这样的,注意加粗部分。
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd">
当dubbo的main方法执行时,会去读取jar包中的配置文件,dubbo.xml和serviceApplicationContext.xml分别读取了一遍。
我这里是将serviceApplicationContext.xml里的