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

你可能感兴趣的:(springboot 包扫描机制导致的ApplicationContextAware未实例化的问题)