spring boot 获取注解_详解如何去自定义一个spring-boot-starter

前言

Spring的特性是IOC和AOP,那SpringBoot呢?想必大家都会先想到自动配置,因为自动配置的特性,SpringBoot的配置相比起Spring十分简便,这也是SpringBoot风靡的原因。本文主要介绍自定义starter的流程与相关细节,并附一个个人自定义的参数校验starter给大家参考。

starter配置启动流程

1.创建自动配置类(XxxAutoConfiguration)并配置需自动化生成组件的扫描区域,如:

@Configuration@ComponentScan@Slf4jpublic class WebValidationAutoConfiguration {  @PostConstruct  public void init() {    log.info("Web common validation initialized");  }}

2.在resources目录下新建META-INF/spring.factories,配置@EnabelAutoConfiguration的注解类(多个则换行配置),格式如下:

# Auto Configureorg.springframework.boot.autoconfigure.EnableAutoConfiguration=io.web.validation.WebValidationAutoConfiguration

3.项目启动时spring-boot-autoconfigure的AutoConfigurationImportSelector会读取解析项目与依赖下的META-INF/spring.factories资源文件获取@EnableAutoConfiguration注解信息并扫描相应package生成所需的bean

Maven依赖

   org.springframework.boot  spring-boot-autoconfigure  2.1.6.RELEASE  provided

注:设置scope为provided方便保持与你项目的spring-boot-autoconfigure的版本一致

添加application.yml/application.properties配置提示

在java配置文件上添加@ConfigurationProperties注解,项目install后的target/class/META-INF下会生成一个spring-configuration-metadata.json文件,该文件其它项目依赖该项目进行application.yml配置文件中的提示来源,当然也可以直接在META-INF下新建spring-configuration-metadata.json自己配置提示信息。图例:

6fe2ae1ef2a07b0d63ab914231957514.png

什么时候考虑定义starter

  • 常见的项目基本功能,如参数校验、数据库配置,放到maven-central管理
  • 企业内部常见功能特性,被其它项目广泛依赖,如特有的鉴权方法,放到企业内部maven-central管理

总结

从以上步骤可以看出spring-boot-starter的配置十分简单,简化一下流程即为:

  1. 添加@ConfigurationProperties以便生成application.yml提示
  2. 配置@EnableAutoConfiguration注解类,自动扫描package生成所需bean
  3. 添加spring.factories配置让spring-boot-autoconfigure对当前项目进行AutoCOnfiguration

结构样例图如下:

93233dcec1afcf27e35b653c258c8a46.png

以上所有图或代码源自个人为避免轮子而自定义的starter,分别是参数校验与swagger自动配置框架:

SpringBoot参数校验的各种姿势

SpringBoot快速自动化配置Swagger

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值