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

@SpringBootApplication是否会扫描test文件夹下的配置类?

问题1:启动正式应用时,是否会加载test目录下的@Configuration配置类?

不会。
Maven、Gradle等标准Java项目构建工具默认会做类路径隔离:

  • src/main/java下的代码属于正式应用编译范围,会被打包到最终的可执行jar/war中,加入正式启动的类路径
  • src/test/java下的代码仅属于测试编译范围,不会被打包到正式应用产物中。正式启动时类路径里根本不存在test下的类,哪怕主类的包扫描范围再大也不可能扫描到,完全不会生效。

问题2:运行测试且@SpringBootTest可扫描到test下配置类的场景下,是否会被@SpringBootApplication自动配置?

默认会。
运行测试时,构建工具会同时把src/main/java和src/test/java的编译结果加入类路径。如果你没有给@SpringBootTest自定义scanBasePackages、classes等专属扫描规则,默认会复用主类@SpringBootApplication的扫描逻辑:@SpringBootApplication自带的@ComponentScan会扫描自身所在包以及所有子包下的所有符合注解规则的类,不管类来自main目录还是test目录,只要满足:

  • 类路径中存在该配置类
  • 配置类的包路径在@SpringBootApplication的扫描范围内
  • 配置类没有加@Profile、@Conditional之类的生效限定注解
    就会被自动扫描加载到Spring测试上下文中生效。

内容的提问来源于stack exchange,提问作者J.J. Beam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:57:04