问题描述:
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