SpringBoot如何自定义一个starter模块

要想自定义一个Starter模块,就需要理解自动装配的原理。首先,想想我们自动装配涉及到哪些关键的类或者属性文件?无非就是配置类+spring.factories属性文件。

1自定义starter的条件

  1. 根据条件检查classpath下对应的类,也就是说需要提供对应可检查的类。
  2. 当满足条件时能够生成自定义的Bean,并注册到容器中去。
  3. 能够自动配置项目所需要的配置。

1.1定义好需要通过配置类来实例化的Bean

SpringBoot如何自定义一个starter模块

1.2定义好属性类

SpringBoot如何自定义一个starter模块
这里通过@ConfigurationProperties注解application.properties前缀为msg的配置信息与MsgProperties的属性绑定。

1.3定义好配置类

SpringBoot如何自定义一个starter模块

1.4定义好spring.factories属性文件

要想实现自动配置,那么spring.factories属性文件是必不可少的,因为SpringBoot需要通过spring.factories找到需要实例化的配置类。然后通过SPI的方式来实例化。所以,我们需要在resources 下面增加 META-INF/spring.factories。
SpringBoot如何自定义一个starter模块

1.5打包上传到本地仓库

上面的步骤都搞好之后,我们这个自定义的starter模块差不多就可以用了,为了上其他项目可以引入我们的自定义的starter模块,我们需要通过mvn install命令将这个starter包上传到我们本地仓库或者私服。
SpringBoot如何自定义一个starter模块

1.6在application.properties文件中增加配置

msg.url=127.0.0.1
msg.content=nice to meet you

1.7测试

SpringBoot如何自定义一个starter模块
SpringBoot如何自定义一个starter模块
总结
本文完整的演示了一遍如何自定义starter模块。其实理解了自动装配的原理就很好的能自定义一个starter模块。它的工作流程无非就三步:

  1. Spring Boot在启动时会扫描项目所依赖的JAR包,寻找包含spring.factories属性文件的JAR包。
  2. 根据spring.factories配置加载EnableAutoConfiguration。
  3. 根据@Conditional注解的条件,进行自动配置并将Bean注入到Spring容器。
    SpringBoot如何自定义一个starter模块
上一篇:spring.factories 的妙用


下一篇:【转载】Spring Cloud Gateway-过滤器工厂详解(GatewayFilter Factories)