最近项目考虑到将一些业务模块抽成公共组件,由具体服务引入即可用,主要为一些数据库配合实现。
第三方组件项目结构:

以上为一个基础模块的一些业务实现
扫描包配置:
/**
* @author Peng
* @program
* @description
* @create 2022/3/30 16:50
**/
@ComponentScan("com.xxx.xxx.component.service.impl")
public class SpringScanConfig {
}
以上为将spring扫描包配置进去
因为@ComponentScan注解只能将spring boot项目目录下的类扫描进 Spring 容器中,但由于我们是第三方依赖引入进去,是无法扫描到的。此时,我们需要使用 spring.factories来注册项目依赖包中的 bean

spring.factories:此处将刚刚配置扫描包的类注册到spring,再借由SpringScanConfig将service扫描到spring容器中
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.gobon.gbjk.component.config.SpringScanConfig
mybatis配置修改

需写成classpath*,而不是classpath,后面加一个*。
classpath:只会在当前应用下的资源文件下查找。
classpath*:会在所依赖的jar中扫描资源文件
服务调用:

因为项目使用到私仓,将配置好的组件推送到私仓,服务直接依赖即可作为组件使用


本文介绍了如何将业务模块抽象为公共组件,通过Spring的@ComponentScan和spring.factories配置,实现在不同服务间的复用。讨论了在SpringBoot中使用Mybatis时,由于依赖于第三方组件,需要特别处理扫描路径的问题,以及如何在私有仓库中管理和发布这些组件。
1161

被折叠的 条评论
为什么被折叠?



