欢迎光临散文网 会员登陆 & 注册

自定义配置Spring Boot Starter,了解官方、第三方starter自动配置参数配置使用

2023-09-09 13:07 作者:step_freedom  | 我要投稿

前言

自定义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类看里边包含的属性有那些,每个值的含义是什么以及如何配置。

image-20230909121335987

测试自定义openai starter

新建一个maven项目

引入maven 坐标

编写测试类

测试

image-20230909121628464

能够输出打印即表示自动加载成功,对于openai 代理错误问题,可以通过配置代理自行解决。


自定义配置Spring Boot Starter,了解官方、第三方starter自动配置参数配置使用的评论 (共 条)

分享到微博请遵守国家法律