Spring Boot3.x自动配置不生效的排查与解决方法(IDEA 文件夹命名导致的问题)

 更新时间:2024年11月20日 10:08:00   作者:Honyelchak  
在SpringBoot多模块项目中,自动配置类未生效的问题通常源于文件路径错误,通过检查和修正AutoConfiguration.imports文件的实际路径,可以解决自动配置不生效的问题,感兴趣的朋友跟随小编一起看看吧

在使用Spring Boot搭建多模块项目时,需要使用到自动配置功能,把一些通用功能封装成模块后通过
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
文件注册配置类。然而,最近遇到一个奇怪的问题:

1.自动配置类怎么都不生效

最终排查发现,问题竟然出在文件路径上!这篇文章记录一下问题的经过和解决方法。

一、问题描述

项目背景

1.使用版本:Spring Boot 3.x。

2.模块设计

  • framework 模块:实现了一个幂等注解 @Idempotent,通过切面类 IdempotentAspect 拦截方法,并用 IdempotentAutoConfiguration 注入。
  • 测试模块:引入 framework 模块,测试幂等注解是否生效。

3.配置方式

  • framework 模块的 src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件中注册自动配置类:
cn.com.h8k.onecoupon.framework.config.IdempotentAutoConfiguration

问题现象

测试时发现:

  • @Idempotent 注解没有触发切面逻辑。
  • 日志里没有加载 IdempotentAutoConfiguration 的相关信息。
  • 即使加了调试代码和日志,仍然没有任何效果。

二、排查过程

1. 确认自动配置文件路径和内容

首先检查了 AutoConfiguration.imports 文件的位置和内容是否正确:

  • 路径:src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  • 内容:确认类名拼写无误。

但是问题依然存在,怀疑是自动配置类根本没有被 Spring Boot 加载。

2. 验证自动配置类是否加载

在自动配置类 IdempotentAutoConfiguration 中添加静态代码块或日志输出,判断是否加载:

@AutoConfiguration
public class IdempotentAutoConfiguration {
    static {
        System.out.println("IdempotentAutoConfiguration 加载成功!");
    }
}

重新启动项目后,依然没有看到任何输出。说明自动配置类根本没有被 Spring Boot 扫描到。

3. 检查 META-INF 文件夹的实际路径

仔细查看项目结构时,发现 META-INF/spring 文件夹显示为 META-INF.spring,这引起了注意。

原因分析:
IntelliJ IDEA 中,新建文件夹 META-INF/spring 后,IDEA 默认显示为 META-INF.spring。如果直接在这个路径下创建文件,实际路径就会变成错误的 META-INF.spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

最终确认:文件路径写错了,Spring Boot 无法找到自动配置文件。

4. 修正路径并验证

将文件移动到正确路径 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 后,重新启动项目,问题解决!

日志中成功显示:

Positive matches:
-----------------
IdempotentAutoConfiguration

测试时,@Idempotent 注解也正常生效,切面逻辑开始运行。

结论 TL;DR

切记,在resources中创建多级文件夹(new directory)的时候,用/进行分割父子文件夹,别用.来分割了

到此这篇关于Spring Boot3.x自动配置不生效的排查与解决:IDEA 文件夹命名导致的问题的文章就介绍到这了,更多相关Spring Boot自动配置不生效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring根据XML配置文件注入属性的方法

    Spring根据XML配置文件注入属性的方法

    下面小编就为大家带来一篇Spring根据XML配置文件注入属性的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 详细总结Java中常用的原子类

    详细总结Java中常用的原子类

    今天给大家总结了一下Java常用的原子类,文中有非常详细的介绍及代码示例,对正在学习java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • java实现文件拷贝的七种方式

    java实现文件拷贝的七种方式

    这篇文章主要介绍了java实现文件拷贝的七种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 详解基于MybatisPlus两步实现多租户方案

    详解基于MybatisPlus两步实现多租户方案

    这篇文章主要介绍了详解基于MybatisPlus两步实现多租户方案,本文分两步,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Java BigDecimal解决double精度丢失的问题

    Java BigDecimal解决double精度丢失的问题

    我们在日常开发中, 有很多时候会遇到小数(double类型)精确计算,本文主要介绍了Java BigDecimal解决double精度丢失的问题,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • MyBatis-Plus中的LambdaQuery用法实例详解

    MyBatis-Plus中的LambdaQuery用法实例详解

    LambdaQueryWrapper是MyBatis-Plus的类型安全查询工具,通过Lambda表达式简化条件构建,避免硬编码字段名,提升代码可读性、维护性及重构友好性,适用于单表查询场景,本文给大家介绍MyBatis-Plus中的LambdaQuery用法,感兴趣的朋友一起看看吧
    2025-07-07
  • 解决spring @ControllerAdvice处理异常无法正确匹配自定义异常

    解决spring @ControllerAdvice处理异常无法正确匹配自定义异常

    这篇文章主要介绍了解决spring @ControllerAdvice处理异常无法正确匹配自定义异常的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java创建文件且写入内容的方法

    Java创建文件且写入内容的方法

    这篇文章主要介绍了Java创建文件且写入内容的方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • SpringBoot实现发送邮件、发送微信公众号推送功能

    SpringBoot实现发送邮件、发送微信公众号推送功能

    这篇文章主要介绍了SpringBoot实现发送邮件、发送微信公众号推送功能,这里对成员变量JavaMailSender使用了@Resource注解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Spring Boot WebSocket 两种集成方式详解

    Spring Boot WebSocket 两种集成方式详解

    WebSocket 是实现服务器主动推送、实时通信的利器,常见于聊天室、消息通知、实时监控大屏等场景,本文详细介绍了SpringBoot集成WebSocket的两种方式,感兴趣的朋友跟随小编一起看看吧
    2026-05-05

最新评论