SpringBoot自定义场景启动器(starter)
点击上方蓝色字体,选择“标星公众号”
优质文章,第一时间送达
作者 | 秋风飒飒吹
来源 | urlify.cn/IzqIB3
有时候,springboot官方提供的场景启动器(starter)并不能很好的满足我们的需求。
一些配置类仍然需要我们自行编写(例如mybatis plus的分页插件配置),在多模块项目中,这种模式代码可能多个模块都需要编写一次,这时候,我们可以考虑自行编写场景启动器,然后在common模块引入即可。
1、命名规约
spring官方:
spring-boot-starter-xxx
自定义:
xxx-spring--boot-starter
2、自定义starter步骤
2.1创建一个普通的空工程
2.2创建一个普通maven项目
这里我将工程命名为gulimall-spring-boot-starter
2.3创建自动配置模块
选择springboot工程构建工具:
模块命名为gulimall-spring-boot-autoconfigure。
这里可以啥都不选,后面可以自行修改
2.4修改pom文件
starter引入autoconfigure模块
autoconfigure模块,先删除build,然后删除spring-boot-test,再删除test包,因为用不到,我这里引入mybatis-plus的starter。
2.5编写配置类
先删除主启动类,然后新建一个配置类
/**
* mybatis plus分页插件配置
* @author wj
*/
@ConditionalOnClass(value = {PaginationInterceptor.class})
@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
}
配置进META-INF\spring.factories:
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.wj.gulimall.autoconfigure.config.MybatisPlusConfig
这样,项目在启动的时候,会见该自动配置类进行扫描。
2.6打包到本地仓库
先打包autoconfigure模块:
双击install
构建成功后,再同样步骤,构建starter模块
3、自定义场景启动的测试
构建成功后,我们就可以再其他项目中的公用模块引入自定义starter:
而我写的分页插件配置仍然生效。
后台日志也打印出分页查询的sql
我这里日志打印使用了p6spy,当然p6spy的全局配置也可以写入自定义的starter中(这里不再赘述)
我们也可以在不要配置数据源的模块中,直接排除mybatis-plus的依赖也不会报错,因为我们在配置类上加上了@ConditionalOnClass(value = {PaginationInterceptor.class}),只有当PaginationInterceptor.class在类路径上存在,才实例化当前Bean。
粉丝福利:实战springboot+CAS单点登录系统视频教程免费领取
???
?长按上方微信二维码 2 秒 即可获取资料
感谢点赞支持下哈