购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.5 自定义starter的实现

SpringBoot提供了很多的Starter场景启动器,开发过程中可以使用这些场景启动器,如(AOP、JPA等等)。

但是有的时候某些业务需求使用启动器时,SpringBoot还无法满足开发所需的场景,那么就可以自定义Starter场景启动器。

3.5.1 系统启动器

源码如下,以Web Mvc Auto Configuration启动器为例。

将需要启动就加载的自动配置类,在META-INF/spring.factories配置规则可以参考/META-INF/spring.factories。

1.命名规约

官方命名:

前缀:“spring-boot-starter-”

模式:spring-boot-starter-模块名

举例:spring-boot-starter-web,spring-boot-starter-actuator,spring-boot-starter-jdbc

自定义命名:

后缀:“-spring-boot-starter”

模式:模块名-spring-boot-starter

举例:mybatis-spring-boot-starter

3.5.2 自定义starter系统启动器

创建一个SpringBoot项目工程【boot_starter】,如图3.5所示。

图3.5

1.创建文件

在当前工程resources目录下创建META-INF/spring.factories,如图3.6所示。

META-INF/spring.factories文件中编写(可参考\META-INF\spring.factories配置文件)

图3.6

在spring.factories文件中配置如下所示:

2.创建配置类与业务逻辑类

在当前工程com.boot.starter.boot_starter.cofig包下创建SpringbootMyAutoConfigure类与ConverterServcie类,如图3.7所示。

图3.7

在SpringbootMyAutoConfigure类中用于在容器中注入一个自动配置的业务逻辑类。

在ConverterServcie类自定义自动配置的业务逻辑以将一个字符变大变小为例。

3.删除其他无关联的包与文件

将当前工程中无关联的包与文件删除如(.mvn,test,.gitignore,HELP.md,mvnw,mvnw.cmd)删除,如图3.8所示。

图3.8

在将pom.xml配置文件中的无用相关的项目坐标删除,留下与关联的坐标如下所示。

点击IDEA工具右边“Maven”按钮中的“install”按钮,打包即可如图3.9所示。

图3.9

打包完成如3.10所示。

图3.10

3.5.3 实现Starter系统启动器

再次创建一个SringBoot工程用于加载自定义的Starter如图3.11所示。

图3.11

在当前工程【boot_starter_test】中的pom.xml中加入自定义Starter工程的坐标值如下所示。

1.创建controller请求类

在当前工程下com.boot.starter.test.boot_starter_test.controller的目录创建TestStarterContrller类如下所示。

启动当前工程,并在浏览器上执行请求地址http://localhost:8080/getString?s=a,效果如图3.12所示。

图3.12

配置文件自动提示:

在工程【boot_starter】中config目录创建ConverterServcieProperties类,如图3.13所示。

图3.13

ConverterServcieProperties类编写配置文件的提示信息。

2.追加过时注解

在ConverterServcie中追加上过时注解@Deprecated,如图3.14所示。

图3.14

创建NewConverterServcie类,如下所示。

SpringbootMyAutoConfigure加载ConverterServcieProperties配置类如下所示。

点击IDEA工具右边“Maven”按钮中的“install”按钮,打包即可,如图3.15所示。

图3.15

打包完成如图3.16所示。

图3.16

实现自动提示

在工程【boot_starter_test】中的application.properties配置文件输入my就是自动提示自定义的starter的配置如图3.17所示。

图3.17

总结

本章学习了外部配置加载顺序是如何加载的,以及Starter源码解析相关的注解的描述与使用,如启动指定类ConfigurationProperties功能;如何将配置文件中对应的值和HttpEncodingProperties绑定起来;如何把HttpEncodingProperties加入ioc容器中,如何自定义一个Starter,创建一组件方便于工作中特殊条件时需要的组件。

作业

1.自定义一个Starter的规则是什么?

2.注解@AutoConfigureAfter和@ConditionalOnMissingBean是什么含义,能干什么事情?

3.描述自动配置的原理?

4.什么是SpringBootStater?

5.SpringBoot还提供了其他的哪些Starter Project Options? xYKgGimeLrVaDH1OewpOQPquq5ZXo5zNKl51CWUQc5iVSgyggqhNoejomdoKtnH5

点击中间区域
呼出菜单
上一章
目录
下一章
×