SpringBoot 注解 @AutoConfiguration 在 2.7 版本中被新增的使用方法详解
作者:catoop
自 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 新增了不少新特性,变化还比较大,特别是自动配置的变更有明显调整,要特别注意。
到此这篇关于SpringBoot 注解 @AutoConfiguration 在 2.7 版本中被新增(使用方法)的文章就介绍到这了,更多相关SpringBoot 注解 @AutoConfiguration内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!