今天在重构项目的时候,碰到一个问题。就是在spring底下,有一个包里面的所有配置类,在idea的开发工具类底下提示,Application context not configured for this file,如图所示
一开始以为是警告,不予处理,后来发现,所有提示这个的配置类,都不加载了。
我就很疑惑,原来项目都没改什么代码,只是将代码进行模块化拆分了而已,为什么就出现这个问题呢。
上网查了一通,有一个方法是可行的,就是使用
@Import
确实,这个方法是可行的,配置类都加载了,但是,我有10多个配置类,我想想就头疼,更让我想不通的是,为什么我原来的项目就不行,一定是哪里配置出问题了。
后面经过高人指点。
问题出现在这里,由于分包,我在启动类底下加这个配置
用于扫描分出来的包的bean。
问题就出在这里,这里开启了,扫描的功能,会把 @SpringBootApplication 的默认扫描注解给失效了。
这个是默认扫描当前包的。
然后我刚刚好就是启动类的那个包有这个问题。
解决办法。将启动的 在启动类的包底下,@ComponentScan(basePackages = "com.xxx.core") 注解删除掉,放到启动包底下随便一个配置类即可。
这样的逻辑是,启动类的 @SpringBootApplication 的 @ComponentScan注解扫描自己的包,去一个一个注入配置类,注入到某一个配置类时,发现,还有@ComponentScan ,就又去一个一个注入,这个指定包下的bean。
完美解决。
博主新推出的gitee免费开源项目(商城+APP+小程序+H5),有兴趣的小伙伴可以了解一下。
生鲜商城kxmall-小程序 + App + 公众号H5: kxmall-生鲜商城+APP+小程序+H5。同时支持微信小程序、H5、安卓App、苹果App。支持集群部署,单机部署。可用于B2C商城,O2O外卖,社区超市,生鲜【带配套骑手端配送系统】。kxmall使用uniapp编码。使用Java开发,SpringBoot 2.1.x框架,MyBatis-plus持久层框架、Redis作为缓存、MySql作为数据库。前端vuejs作为开发语言。https://gitee.com/zhengkaixing/kxmall
- 阿里云服务器折扣场:点我进入
- 腾讯云服务器秒杀场:点我进入