SpringBoot启动类关于@ComponentScan注解

最近在自学springboot的时候遇见了一个关于启动类注解@ComponentScan引起的问题。我用Idea搭建了一个Maven多项目聚合工程,如图:

SpringBoot启动类关于@ComponentScan注解_第1张图片

就是这样一种结构吧,我就不一个个解释每个工程了,其中我的Model单独建立了一个工程进行统一的管理(xc-framework-model),接口也进行了统一的管理(xc-service-api),我在我的后台服务工程中(xc-service-manage-cms)创建如下结构:

SpringBoot启动类关于@ComponentScan注解_第2张图片

ManageCmxApplication是我自定义的启动类,重点来了:

SpringBoot启动类关于@ComponentScan注解_第3张图片

我添加了注解@ComponentScan注解扫描我的接口工程下的包,就开始启动项目进行访问,如图:

SpringBoot启动类关于@ComponentScan注解_第4张图片

报错了!!!原因是没有扫描到启动类xc-service-manage-cms工程的com.xuecheng.manage_cms包下的所有包,为什么呢?不是说启动类可以自动扫描所在包及其子包下所有的Bean吗?

因为如果启动类上用了@ComponentScan注解后,它就不会再自动扫描所在包及其子包下所有的Bean,解决方法:

SpringBoot启动类关于@ComponentScan注解_第5张图片

在启动类上加上注解@ComponentScan注解,强制扫描同级目录下的包或子包,就可以了。

你可能感兴趣的:(技术原创)