当前位置: 代码网 > it编程>编程语言>Java > Spring Boot3.x自动配置不生效的排查与解决方法(IDEA 文件夹命名导致的问题)

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

2024年11月26日 Java 我要评论
在使用spring boot搭建多模块项目时,需要使用到自动配置功能,把一些通用功能封装成模块后通过meta-inf/spring/org.springframework.boot.autoconfi

在使用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自动配置不生效内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com