likes
comments
collection
share

spring boot 2.7后不再推荐使用spring.factories自动装配如果我们打开spring boot

作者站长头像
站长
· 阅读数 28

大家好,这里是小奏,觉得文章不错可以关注公众号小奏技术

如果我们打开spring boot github的发版记录。

spring boot 2.7.0-M2-Release的发版记录会发现如下说明

spring boot 2.7后不再推荐使用spring.factories自动装配如果我们打开spring boot

原文地址

大致意思就是spring boot 2.7之后不再推荐使用spring.factories自动装配。

推荐使用META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports来自动装配。

当然为了向后兼容,spring.factories还是会继续支持

spring.factories使用方式

如果经常写spring boot相关的自定义sdk,对spring.factories应该不陌生。

很简单的一个使用场景。

比如我们现在要编写一个sdk 我需要自动装配一些bean。那么如何使用spring.factories实现自动装配呢?

因为我是sdk所以不会被spring boot扫描到,所以我需要在spring.factories中指定bean的全路径。来加载我们的bean

使用方式很简单

  1. 创建配置类
@Configuration(proxyBeanMethods = false)
public class NebulaDistributedLockAutoConfiguration {
    
    @Bean
    public RedissonDistributedLockTemplate redissonDistributedLockTemplate(RedissonClient redissonClient) {
        RedissonDistributedLockTemplate template = new RedissonDistributedLockTemplate(redissonClient);
        return template;
    }

    
}

然后在resources目录下创建META-INF/spring.factories文件,并添加如下内容

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.nebula.distribute.lock.autoconfigure.NebulaDistributedLockAutoConfiguration
  1. org.springframework.boot.autoconfigure.EnableAutoConfiguration=\是固定格式
  2. com.nebula.distribute.lock.autoconfigure.NebulaDistributedLockAutoConfiguration是我们的配置类全路径

这样我们的NebulaDistributedLockAutoConfiguration即使不在spring boot的扫描路径下,也会被自动装配

spring boot 2.7之后推荐的使用方式

spring boot 2.7之后不再推荐使用spring.factories自动装配。

推荐使用META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports来自动装配。

所以我们上面的代码要改成如下

  1. resources新建/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件

然后在文件中添加如下内容

com.nebula.distribute.lock.autoconfigure.NebulaDistributedLockAutoConfiguration

如果我们查看一些开源项目,就可以看到他们的spring.factories文件已经被替换成了org.springframework.boot.autoconfigure.AutoConfiguration.imports文件

比如我们随便看看spirng cloud kubernetes源码

spring boot 2.7后不再推荐使用spring.factories自动装配如果我们打开spring boot

不过值得注意的是他们项目好像也保留了spring.factories文件,可能是为了兼容低版本的spring boot

总结

总的来说spring.factoriesorg.springframework.boot.autoconfigure.AutoConfiguration.imports都是用来自动装配bean的。

spring.factoriesspring boot 2.7之前的推荐使用方式

org.springframework.boot.autoconfigure.AutoConfiguration.importsspring boot 2.7之后的推荐使用方式

所以如果你的项目是spring boot 2.7及之后的版本,建议使用org.springframework.boot.autoconfigure.AutoConfiguration.imports来自动装配bean

可以明显的看到使用org.springframework.boot.autoconfigure.AutoConfiguration.imports更加直观,不需要再去指定EnableAutoConfiguration这个固定的字符串

然后多个配置之间也不用再用,\来换行,直接换行即可

转载自:https://juejin.cn/post/7407262746700070964
评论
请登录