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, before 和 beforeNames 属性进行自动配置排序。

你可以把 @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)

相关推荐
这个昵称不容易1 天前
SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在
java·springboot·毕设
这个昵称不容易2 天前
SpringBoot 读书笔记共享平台部署实战:97 个 Java 文件 / 113 个接口 / 10 张表
java·springboot·毕设
RuoyiOffice3 天前
Vue3+Gantt:把任务排期、依赖关系和里程碑放进项目管理
项目管理·vue3·springboot·dhtmlx-gantt·wbs·gantt·ruoyi office
AI源码4 天前
学生成绩管理系统
springboot
无所谓^_^5 天前
个人健康管理系统 | Springboot3 | Vue3
java·vue·毕业设计·springboot·课程设计·毕设·前后端分离
-星空下无敌6 天前
Windows Docker K8s 安装部署Naocs ,SpringBoot 3.x 4.x 整合Naocs 版本兼容 配置中心、服务注册与发现
windows·docker·nacos·kubernetes·springboot·alibaba
欢醉6 天前
前后端Long精度丢失的踩坑
springboot·springcloud
这个昵称不容易7 天前
SpringBoot 墙绘交易平台毕设:128个文件154个接口含论文,带运行截图
java·springboot·毕设
坐吃山猪9 天前
SpringBoot2.7集成Knife4j
springboot·knife4j
AI开源软件11 天前
SpringBoot信创项目怎么验收?从数据库迁移到交付证据
postgresql·springboot·达梦·opengauss·信创·企业管理系统