升级springboot3之自动配置导入失效问题及解决

 更新时间:2024年07月13日 14:37:41   作者:喜欢读源码的小白  
这篇文章主要介绍了升级springboot3之自动配置导入失效问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

升级springboot3之自动配置导入失效

解决办法 (主动扫描加载META-INF/spring.factories下的自动配置类)

①.创建一个类实现DeferredImportSelector和BeanClassLoaderAware类

public class EnableAutoConfigurationImportSelector implements DeferredImportSelector, BeanClassLoaderAware {

    private ClassLoader classLoader;

    @Override
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        List<String> configurations = SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class, classLoader);
        if (configurations.size() != 0){
            return StringUtils.toStringArray(configurations);
        }
        return new String[0];
    }

    @Override
    public void setBeanClassLoader(ClassLoader classLoader) {
        this.classLoader = classLoader;
    }

② 在启动类加上import注解

@EnableDiscoveryClient
@SpringBootApplication
//导入刚刚创建的类
@Import(value = EnableAutoConfigurationImportSelector.class)
public class Java17DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(Java17DemoApplication.class, args);
    }

}

导致问题的原因

spring2 和 spring3的spi扫描路径不一致

  • springboot2扫描的是META-INF/spring.factories文件
  • springboot3扫描的是META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.import

这是springboot2的扫描路径

这是升级到了springboot3时 扫描的文件路径

所以 升级到springboot3时 因为没有META-INF/spring.factories了 所以这个文件下的自动配置类就没有加载到ioc容器中

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringMVC @ResponseBody 415错误处理方式

    SpringMVC @ResponseBody 415错误处理方式

    这篇文章主要介绍了SpringMVC @ResponseBody 415错误处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java堆外内存溢出的紧急处理技巧

    Java堆外内存溢出的紧急处理技巧

    在高并发的Java应用场景中,堆外内存溢出往往是最难排查的问题之一,当SpringBoot项目出现内存异常时,传统的堆内存分析工具常常束手无策,因为堆外内存不受JVM堆内存管理机制的直接控制,本文将通过一个真实的电商缓存服务案例,完整展示从问题发现到定位再到解决的全流程
    2025-06-06
  • Java 循环队列/环形队列的实现流程

    Java 循环队列/环形队列的实现流程

    循环队列又叫环形队列,是一种特殊的队列。循环队列解决了队列出队时需要将所有数据前移一位的问题。本文将带大家详细了解循环队列如何实现,需要的朋友可以参考一下
    2022-02-02
  • Java实现读取html文本内容并按照格式导出到excel中

    Java实现读取html文本内容并按照格式导出到excel中

    这篇文章主要为大家详细介绍了如何使用Java实现读取html文本提取相应内容按照格式导出到excel中,文中的示例代码讲解详细,需要的可以参考下
    2024-02-02
  • springboot aspect通过@annotation进行拦截的实例代码详解

    springboot aspect通过@annotation进行拦截的实例代码详解

    这篇文章主要介绍了springboot aspect通过@annotation进行拦截的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 详解log4j.properties的简单配置和使用

    详解log4j.properties的简单配置和使用

    本篇文章主要介绍了详解log4j.properties的简单配置和使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 基于Mybatis映射的一点心得(分享)

    基于Mybatis映射的一点心得(分享)

    下面小编就为大家带来一篇基于Mybatis映射的一点心得(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Java解析XML的四种方式

    Java解析XML的四种方式

    本文详细讲解了Java解析XML的四种方式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • SpringBoot3文件管理操作方法

    SpringBoot3文件管理操作方法

    这篇文章主要介绍了SpringBoot3文件管理,本文案例只围绕普通文件和Excel两种类型进行代码实现,包括工程搭建、上传下载操作,需要的朋友可以参考下
    2023-08-08
  • java和jsp之间的request传值方法

    java和jsp之间的request传值方法

    这篇文章主要给大家介绍了关于java和jsp之间的request传值方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10

最新评论