SpringBoot 注解 @AutoConfiguration 在 2.7 版本中被新增(使用方法)

自 Spring Boot 2.7.0 版本起,关于自动配置进行了较大调整,要特别注意,主要内容如下。

1、自动配置注册文件

之前版本的自动配置类是写在 META-INF/spring.factories 文件中的,内容示例如下:

复制代码
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.MyAutoConfiguration1,\
com.example.MyAutoConfiguration2,\
com.example.MyAutoConfiguration3

2.7.0 版本开始,变更为写在 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件中,每行条记录,内容示例如下:

复制代码
com.example.MyAutoConfiguration1
com.example.MyAutoConfiguration2
com.example.MyAutoConfiguration3

a) 编写格式确实是比之前方便多了,但文件名确实也太长了,比较难记。

b) 为了兼容性 META-INF/spring.factories 虽然现在被标识废弃了,但现在仍然可以使用,后续可能被彻底删除,建议使用新的规范。

2、新注解 @AutoConfiguration

新增了一个自动配置注解 @AutoConfiguration,用来代替之前的 @Configuration,用于标识新自动配置注册文件中的顶级自动配置类,由 @AutoConfiguration 注解嵌套、导入进来的其他配置类可以继续使用 @Configuration 注解。

另外,为方便起见,@AutoConfiguration 注解还支持 after, afterNames, beforebeforeNames 属性进行自动配置排序。

你可以把 @AutoConfiguration 在一定程度上理解为 @Configuration + @AutoConfigureAfter + @AutoConfigureBefore 的组合。

除此组合包装之外,在 @SpringBootApplication 自动加载时,使用 AutoConfigurationExcludeFilter 排除了 @AutoConfiguration 修饰的类,这样更明确的把 @AutoConfiguration 定义为自动配置类,所以使用 @AutoConfiguration 注解的类默认不会被 Spring 加载,你必须要主动配置到 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件中才可以正常被加载。

这个注解可以说细分的更加清晰了,即直接理解为自动配置专用注解,用专门的注解来干专门的事,这样也可以用来区分用 @Configuration 标识的普通配置类。

2.7 版本还新增的其他内容

  • 支持 GraphQL
  • 支持 Podman
  • 支持 RabbitStreamTemplate
  • 支持 Hazelcast
  • 支持 Cache2k
  • Web Server SSL 增强
  • info 端点增强
  • 单元测试加强

以上内容的新增,具体情况详见官网。

总结

Spring Boot 2.7.0 新增了不少新特性,变化还比较大,特别是自动配置的变更有明显调整,要特别注意。


(END)

相关推荐
下次再写3 小时前
互联网大厂Java面试三轮技术问答及详解——涵盖Spring Boot与微服务
java·springboot·microservices·interview
吕永强1 天前
基于SpringBoot+Vue校园报修系统的设计与实现(源码+论文+部署)
vue·毕业设计·springboot·毕业论文·报修系统·校园报修
Flittly3 天前
【SpringSecurity新手村系列】(3)自定义登录页与表单认证
java·笔记·安全·spring·springboot
Flittly4 天前
【SpringSecurity新手村系列】(2)整合 MyBatis 实现数据库认证
java·安全·spring·springboot·安全架构
极光代码工作室4 天前
基于SpringBoot的在线考试系统
java·springboot·web开发·后端开发
YDS8295 天前
大营销平台 —— 抽奖规则决策树
java·springboot·ddd
码农张36 天前
自定义跨字段校验必填注解
springboot
格鸰爱童话6 天前
向AI学习项目技能(七)
学习·springboot
代码漫谈6 天前
微服务 vs 单体架构:架构选型、实战拆解与决策指南
java·微服务·springboot·springcloud
文慧的科技江湖6 天前
光储充一体化系统落地 PRD 全功能清单 - 慧知开源充电桩平台
java·mysql·开源·springboot·慧知开源充电桩平台·充电重复订单解决方案源码