编写属于自己的springboot-starter
最近手痒,想实现一下自己的starter,感概于springboot的starter导入方便,要是能有一款自己的starter,那样多么好,比起之前的maven导入方式,好像更有意思。
主要可以加重对springboot的自动配置装载的理解。
实现过程
starter的简易目录如下,”autoconfiguration”,”domain”,”service”,”META-INF”:

这几个包的作用如下:domain一般放置配置的参数,比如我们通常在application.properties中用到的xxx.yyy=value,其中xxx.yyy就是在这里配置的,前面的xxx我们一般指前缀,用以标识某个类级别,后面的yyy
一般会是指代属性,如果是驼峰标识的属性在properties文件中,默认为-连接。其中前缀的定义方式使用注解@ConfigurationProperties

service服务的实际配置使用,我们获取到参数之后,总要将参数用起来,那么参数配置才有价值,而这些都是在service中做处理,也就是业务处理。所以可以想象的到,在service类里面,我们肯定需要一个
domain的类来接收配置的参数。

autoconfiguration包其实就是我们的自动装载配置了,它需要告诉系统我们要让哪个配置类自动装载,spring的ioc要管理bean,前提就是这个bean要被加载到了容器中,所以我们需要注入配置类(domain)
使用@Configuration指明当前类是配置类,使用@EnableConfigurationProperties指明快速注册到spring中的类。

另外就是resource下的META-INF包下的spring.factories文件,这里说的是元信息,也是指明我们的配置启动类是在哪个目录,在其它的spring项目里面也可以看到这个文件。

现在我们看下pom文件我们导入的包:

我在这里加入了configuration-processor包,这种情况下能够方便我们在配置文件中使用我们自定义的前缀,然后进行提示。

注意到我这里有些jar包引入的时候使用optional,这种方式声明的包不会让jar包顺延,也就是在使用方我们仍需导入这个包才能使用。