SpringBoot自定义场景启动器(starter)

不问归期 提交于 2021-01-02 16:55:29

点击上方蓝色字体,选择“标星公众号”

优质文章,第一时间送达

  作者 |  秋风飒飒吹

来源 |  urlify.cn/IzqIB3

66套java从入门到精通实战课程分享

有时候,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 秒
即可获取资料



感谢点赞支持下哈 

本文分享自微信公众号 - java1234(gh_27ed55ecb177)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!