You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3.2.4多模块同名Application类Bean冲突问题咨询

问题原因

Spring Boot 3.x 对配置类的Bean命名与扫描逻辑做了调整,当多模块项目中两个标注@SpringBootApplication的启动类同名且被同一个Spring上下文扫描到时,默认会以类名首字母小写作为Bean名称,导致两个Application类生成的Bean名称均为application,触发Bean定义冲突。而Spring Boot 2.4.2中可能因扫描范围的隐性限制或命名策略差异,未触发该问题。

解决方案

以下几种方法均可解决该冲突:

  • 重命名启动类:将其中一个模块的启动类改名,比如把calculation模块的启动类改为CalculationApplication,customer模块的改为CustomerApplication。默认生成的Bean名称会变为calculationApplication和customerApplication,自然规避冲突。
  • 手动指定Bean名称:在其中一个启动类的@SpringBootApplication注解中显式指定Bean名称,示例:
    @SpringBootApplication(name = "calculationApplication")
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
    
  • 缩小扫描范围:调整customer模块启动类的扫描配置,只扫描自身模块的包,避免将依赖模块的启动类纳入扫描范围。示例:
    @SpringBootApplication(scanBasePackages = "com.customer.xxx")
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
    

内容的提问来源于stack exchange,提问作者Biel Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 15:32:04