背景
公司封装了基础包和日志包,将公共的配置抽取出来,供所有项目使用,因此就需要考虑,怎么引入外部 jar 包的 Bean 实例;
思考
因为公司的 jar 包就是普通的 jar,不支持 springboot 的自动配置(架构师没有写成 spring-boot-starter),所以开发时,第一反映就是使用 @ComponentScan 扫描外部的配置,但是总感觉这种方式不太优雅
解决方式
- 针对普通的 jar 包
- 直接通过 @ComponentScan 注解扫描,跟我想的一样,如果只需要使用个别的 bean,就单独扫描即可
- 在 jar 包中编写 @Configuration 配置类,然后使用 @ConponentScan 扫描所有的 bean,然后自定义注解,使用 @Import ({xxx.class}) 注解导入前面编写的配置类,在项目中使用时,只需要添加自定义注解即可; 这种方式在项目中不用关注 jar 包的所需要扫描的路径
- 针对 starter 方式的 jar 包
- springboot 默认启动时,会扫描所有的自动配置类,然后将其加载进来,并注入到 IOC 容器中,因此只需要制作一个 springboot 的 starter 包,在 pom 中引入就可以了,无需扫描配置!
- 针对 maven 项目
- 通过仓库直接导入
- 通过
system 到处本地jar - 或者通过maven 相关命令