假设目录结构如下,chat服务要导入im组件注入bean。
com.jagger
├── common <- 公共模块
│ └── im <- IM 组件
└── services <- 微服务模块
└── chat <- Chat 微服务
因为im不属于chat子包层级,spring boot启动时不会默认扫描。这时就需要在im包对外主动暴露自动配置类,chat服务导入时根据配置类进行扫描。
添加IMAutoConfiguration类
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.jagger.common.im") // 指定扫描路径
public class IMAutoConfiguration {
}
添加AutoConfiguration文件
如果是spring boot2.7以下创建文件:resources/META-INF/spring.factories,并写入
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.jagger.common.im.IMAutoConfiguration
如果是spring boot2.7以上,特别是3.x创建文件:/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,注意这里目录结构不一样是:/resources/META-INF/spring
com.jagger.common.im.IMAutoConfiguration