最近在搭建springboot继承dubbo的分布式项目时,测试dao层遇到的问题,启动测试方法时,出现如下错误:
java.lang.IllegalStateException: Found multiple @SpringBootConfiguration annotated classes [Generic bean: class [com.example.cqw.DubboDaoApplication]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [D:\study\dubbo-parent\dubbo-dao\target\classes\com\example\cqw\DubboDaoApplication.class],
at org.springframework.util.Assert.state(Assert.java:94)
at org.springframework.boot.test.context.SpringBootConfigurationFinder.scanPackage(SpringBootConfigurationFinder.java:69)
如图:
分析原因:
项目架构,如图:
分析原因:
- 最初在创建项目时,都是创建的springboot项目,都有启动类SpringBootApplication,并且生成启动类时都有@SpringBootApplication注解。
- 因为在dubbo-service项目中有启动类,提供rpc服务,并且依赖于dubbo-dao和dubbo-pojo,生成时这三个项目都有启动类,并且都有@SpringBootApplication注解;所以启动dubbo-service项目时就造成了java.lang.IllegalStateException: Found multiple @SpringBootConfiguration annotated classes。
- 解决方案,dao和pojo只是作为jar,不单独部署,直接注释掉启动类上的@SpringBootApplication注解即可。