自定义配置Spring Boot Starter,了解官方、第三方starter自动配置参数配置使用
前言
自定义starter 官方规范
命名规范
为了使用者很好的区分某个starter是官方提供的还是第三方提供的,官方对starter的命名给出了规范要求,规范格式说明如下表所示:
官方spring-boot-starter-xxx 例如:spring-boot-starter-web
自定义xxx-spring-boot-starter 例如:mybatis-spring-boot-starter
module模块规范
官方对自定义starter module模块做了规范,模块主要包括自动配置module、starter module。两者的主要作用描述如下所示:
Autoconfigure module自动配置module包含一切启动所需要的库、配置是Starter
starter module 代码内容为空,主要用来管理依赖,引用autoconfigure模块。供其他人引用。
注意:如果管理依赖和自动配置无需分开,可以将两者合并到一起,只用一个spring boot项目即可。
主要涉及到注解
@Configuration
:本注解是一个Spring Framework自定义配置注解,相当于Spring XML 配置文件的替代方案。主要作用是配置管理各种所需要的spring bean。
@EnableConfigurationProperties和@ConfigurationProperties
将外置spring 配置文件application.yml或application.properties关联到相关的java 对象上;配置application.yml或application.properties,可以通过java 对象操作配置文件中的值。
@ConditionalOnClass和@ConditionalOnMissingBean
是两个条件化配置注解,只有在某个条件满足时,才可以去创建bean。
@ConditionalOnClass
主要用于类路径上,满足条件某个条件才创建响应的bean;@ConditionalOnMissingBean
只有当bean不存在时才创建bean;
自定义配置类自动加载配置
将自己开发的配置类,在META-INF/spring.factories
(spring-boot 2.7 以前版本)中进行指定,然后spring boot启动时会自动去加载此配置类。spring boot 根据文件中配置的org.springframework.boot.autoconfigure.EnableAutoConfiguration
的key进行自定义配置类的查找。实例如下:
spring boot 2.7即以后版本使用/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
进行自动配置类配置,文件内容为类名。
自定义starter demo
本demo实现一下openai自动配置starter,主要通过集成openai api 自动配置openaiservice,获取openaiservice对象。具体实现如下:
新建多模块项目
新建一个openai-freedom-demo项目,里边包含两个模块,一个模块为openai-freedom-spring-boot-autoconfigure,主要用来自动配置openaiservice bean,一个为openai-freedom-spring-boot-starter,主要用来管理依赖。将openai-freedom-spring-boot-autoconfigure依赖添加到starter模块中。其他第三方引用你开发的jar时,只需引用starter模块即可,无需再引用autoconfigure模块。
下边为目录结构截图:

父pom.xml内容
autoconfigure pom.xml 内容
starter pom.xml 配置内容
配置openai自动配置类
OpenAiProperties类,主要用来将application.yml中的配置项与java 实体进行映射。
OpenAiAutoconfigure类,用来对openaiservice对象进行配置,并初始化。
spring spi 自动配置加载OpenAiAutoconfigure
spring boot 2.7 版本之前,使用META-INF/spring.factories
配置
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.freedom.OpenAIAutoConfigure
spring boot 2.7 版本即之后,使用/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
配置
com.freedom.OpenAIAutoConfigure
两种情况可以同时存在于你的starter中,这样你就可以兼容两个版本的自定义配置starter
application.properties自动提示说明
如果想让自定义openai的配置参数在application.propeties中,输入前缀后能够自动提示,可以添加以下依赖解决。
application.properties 应用所有参数从那找到说明
针对平时我们在配置其他人写的starter时,可以通过加载jar中找到对应的properties类看里边包含的属性有那些,每个值的含义是什么以及如何配置。

测试自定义openai starter
新建一个maven项目
引入maven 坐标
编写测试类
测试
