SpringBoot-创建自己的starter和autoconfiguration

来源:互联网 发布:windows xp硬盘安装版 编辑:程序博客网 时间:2024/06/05 16:54

以前对于SpringBoot的starter机制一直很好奇,为什么我们引入一个开源框架的starter,就可以直接使用了,如何做到的。于是就看了几个starter的源码,探究一下。

(1)其实对于每个starter里面并没有源码,只是依赖了一个对应的autoconfiguration,这个autoconfiguration的jar包下有一个XxxxxxAutoConfiguration.class,里面配置了框架启动需要自动注入的一些bean(默认优于配置)。所以会自动启动这个XxxxxxAutoConfiguration.class

(2)在META-INF/spring.factories加上自动装配配置;META-INF/spring-configuration-metadata.json下配置application.properties的key-value的提示项。

创建步骤

(1)实现XxxxxxAutoConfiguration.class类,并加上@Conditional限制条件

这需要实现需要自动装载的bean

(2)在META-INF/spring.factories里面加上如下:

# 如果有多个XxxxxAutoConfiguration,用逗号分隔org.springframework.boot.autoconfigure.EnableAutoConfiguration=xxx.xxx.xxx.xxx.XxxxxAutoConfiguration

(3)限制Auto-Configuration的顺序

使用 @AutoConfigureAfter or @AutoConfigureBefore可以限制XxxxxxAutoConfiguration.class的加载顺序

(4)创建metadata

(META-INF/spring-configuration-metadata.json) to make sure your keys are properly documented.
这里的配置是作用XxxxxxAutoConfiguration需要用到的一些properties的,这些properties我们可以写在application.properties里面,然后通过这个文件的规约给出提示。

此外我们可以写一个XxxxProperties.java, 然后通过 @ConfigurationProperties 注解,自动装载application.properties的值到XxxxProperties.java中。

(5)编写startermodule,引入Auto-Configuration这个module

原创粉丝点击