springboot 包扫描机制导致的ApplicationContextAware未实例化的问题

问题描述:

AuthServer 项目依赖自定义的 commons 工具包,在 AuthService 中使用 ApplicationUtil 获取 bean 的时候,发现ApplicationUtil.getBean()返回 null。

项目结构如下图


commons
AuthServer

原因分析:

ApplicationUtil

可以看到 ApplicationUtil 使用了@Component注解,spring会自动将该注解的类自动装配到beans管理,但默认它只会扫描main同级及同级一下的包,所以,这里的问题就一目了然了,因为 ApplicationUtil 在com.dmjy.cloud.commons包下面,而 AuthServer 的包是com.dmjy.cloud.authserver。所以 AuthServer 是不会主动取扫描 commons 包下 bean 的。

解决办法:

在 AuthServerApplication 类中添加@ComponentScan(basePackages = {"com.dmjy.cloud"}) 手动指定扫包路径即可解决

image.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容