如何自定义个一个开箱即用并可以配置属性的SpringBoot的starter

如何自定义个一个开箱即用可以配置的SpringBoot的starter
记录如何创建一个自定义(输出请求地址ip)开箱即用的starter,我目前使用的SpringBoot的版本是2.6的版本,代码比较简单涉及的文件比较多所以选择直接截图的方式记录了

一、创建一个SpringBoot项目

命名按照正常的starter来定义就行(xxx-spring-boot-starter),当然也可以随意命名,没什么大影响,添加两个所需依赖

请添加图片描述

lombok不用解释了吧,另外一个依赖是为了你在写配置文件的时候有提示比较方便的
请添加图片描述

二、编码自定义starter

1.自定义starter中引用所需的pom文件

刚才少添加了一个web的starter,记得加回来不然没法使用Spring的注入接口,这几个就足够了,也可以根据自己的starter需求添加对应依赖
自定义starter中的pom文件

2.新建一个接口和实现类

新建api包并创建PrintIpService接口和PrintIpServiceImpl实现类,在实现类里面书写我们主要的核心功能
在这里插入图片描述

3.新建configure包并创建configure配置类,实例化对象

在这里插入图片描述

4.将配置类引入到spring环境中

resource -> META-INF -> spring.factories
在resource中创建META-INF文件夹,然后再文件夹内创建spring.factories文件,并在文件中添加下面一句话,等号后面的值是自己配置类的全路径包名

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.xiaoliu.configure.PrintIpAutoConfigure

三、将starter放到Maven仓库中,双击install

在这里插入图片描述
到此一个简单的输出请求ip的starter就创建完成了

四、创建测试工程PrintIp-test

1.添加starter依赖

创建测试工程就不贴图和之前黑丝一样的,在测试工程的pom文件中添加我们自定义的依赖。这里依赖就是我们自定义starter项目的pom文件的前几行代码,把groupId和artifactId以及version对应起来就行了
在这里插入图片描述

2.编写一个简单的接口并在其中注入我们的PrintIpService

在这里插入图片描述

五、启动测试工程PrintIp-test并访问mystarter接口

在这里插入图片描述
测试成功,控制台能正确输出我们的请求IP
在这里插入图片描述

此时的自定义starter还不能够满足开箱即用的特点,即便引入了相关依赖还需要我们在需要的地方手动的注入,下面我们将借助interceptor拦截器来帮我们实现开箱即用的特点,并且添加调用方可配置的输出格式

六、添加拦截器

在starter项目中添加拦截器PrintIpInterceptor和SpringMvcConfig类将自定义拦截器加到Spring中,将之前在测试工程的接口中注入和手动调用PrintIpService方法的代码放到拦截器中
在这里插入图片描述
在这里插入图片描述
到这里就已经实现了开箱即用的特点,无需调用方在手动编写代码,只要引入我们自己定义的starter依赖即可实现请求ip的输出

七、增加属性配置项

通过配置文件可以修改starter的输出格式

1.创建一个样式配置类PrintIpStyleConfig和一个样式枚举类

在这里插入图片描述

在这里插入图片描述

2.修改PrintIpServiceImpl中打印功能代码

根据调用方配置的不同值显示不同的样式,默认是default在这里插入图片描述

3.重新install自定义的starter

八、在Print-test工程中刷新Maven然后添加配置代码

根据配置的Style的值来控制输出格式,不配置走默认样式
在这里插入图片描述

九、重启测试工程进行测试

默认样式,不配置也是当前样式因为在starter中配了默认值在这里插入图片描述

配置详情样式
在这里插入图片描述
到目前为止一个简单的开箱即用可以配置的输出请求IP的自定义starter就完成了,可以按照个人需求去定义个性化的starter

十、最终项目目录结构

1.最终自定义starter项目目录结构

在这里插入图片描述

2.最终测试工程项目目录结构

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值