最近在自学springboot的时候遇见了一个关于启动类注解@ComponentScan引起的问题。我用Idea搭建了一个Maven多项目聚合工程,如图:
就是这样一种结构吧,我就不一个个解释每个工程了,其中我的Model单独建立了一个工程进行统一的管理(xc-framework-model),接口也进行了统一的管理(xc-service-api),我在我的后台服务工程中(xc-service-manage-cms)创建如下结构:
ManageCmxApplication是我自定义的启动类,重点来了:
我添加了注解@ComponentScan注解扫描我的接口工程下的包,就开始启动项目进行访问,如图:
报错了!!!原因是没有扫描到启动类xc-service-manage-cms工程的com.xuecheng.manage_cms包下的所有包,为什么呢?不是说启动类可以自动扫描所在包及其子包下所有的Bean吗?
因为如果启动类上用了@ComponentScan注解后,它就不会再自动扫描所在包及其子包下所有的Bean,解决方法:
在启动类上加上注解@ComponentScan注解,强制扫描同级目录下的包或子包,就可以了。