spring.factories失效问题解决
问题
在SpringBoot3中spring.factories配置的自动装配不生效
失效原因
-
从 Spring Boot 2.6 升级到Spring Boot 2.7后,自动配置注册有更改。 Spring Boot 2.7发行说明
-
废弃说明:
如果您创建了自己的自动配置,则应将注册从密钥
spring.factories
下移至org.springframework.boot.autoconfigure.AutoConfiguration.imports
。每行包含自动配置类的完全限定名称,而不是单个逗号分隔的列表。有关示例,请参阅包含的自动配置。
为了向后兼容,spring.factories仍将保留中的条目。
- 在Spring Boot 2.7还是可以兼容使用spring.factories
- 到了SpringBoot3 spring.factories就不兼容使用了。
- tips: 在SpringBoot3中
spring.factories
使用org.springframework.boot.env.EnvironmentPostProcessor
动态加载配置文件配置文件却还生效的。
解决办法
使用spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
代替spring.factories
中的org.springframework.boot.autoconfigure.EnableAutoConfiguration
示例
- 原spring.factories文件
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.xxx.iot.common.config.SaTokenConfigure,\
com.xxx.iot.common.config.SecurityProperties
- 在
resource/META-INF
目录下新建spring
目录,并添加org.springframework.boot.autoconfigure.AutoConfiguration.imports
文件
com.xxx.iot.common.config.SaTokenConfigure
com.xxx.iot.common.config.SecurityProperties