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

Spring Boot中Active Profile设置失效问题排查

Spring Boot配置spring.profiles.active=dev不生效,激活的始终是prod

我在application.properties中配置了spring.profiles.active=dev,但控制台显示激活的配置文件是prod,请求接口也返回prod对应的配置,请问这是为什么?

技术栈

  • IDE:Spring Tool Suite 4(版本4.23.0.RELEASE)
  • 语言:Java SE 17

相关代码与配置

RestController代码

public class HomeController {

  @Value("${application.dbms}")
  String dbmsInUse;
  
  @Value("${spring.profiles.active}")
  String profiles;

  @GetMapping("/dbms")
  public void getDbms() {
    log.info("Profile: {}, DBMS: {}", profiles, dbmsInUse);
  }
}

配置文件

  • application.properties:
spring.application.name=profile_dbms
spring.profiles.active=dev
  • application-dev.properties:
application.dbms=h2
  • application-prod.properties:
application.dbms=MariaDB

运行配置

  • Spring Boot Profile:无
  • 虚拟机参数(VM arguments):无

控制台输出

启动日志:

2024-06-13T10:02:45.540+09:00  INFO 62532 --- [profile_dbms] [  restartedMain] s.bum.profile.ProfileDbmsApplication     : The following 1 profile is active: "prod"

请求http://localhost:8080/dbms后的日志:

2024-06-13T10:11:18.903+09:00  INFO 62532 --- [profile_dbms] [nio-8080-exec-1] space.bum.profile.HomeController         : Profile: prod, DBMS: MariaDB  

排查方案

  1. 检查环境变量
    Spring Boot会优先读取环境变量SPRING_PROFILES_ACTIVE,确认系统环境变量、IDE的环境变量配置中是否将该值设为了prod。

  2. 核实启动参数
    检查IDE的Program arguments、启动脚本中是否传递了--spring.profiles.active=prod参数,这类参数优先级高于配置文件。

  3. 确认配置文件优先级

  • 检查项目是否存在外部配置目录或更高优先级的配置文件(如application.yml、打包后外部的配置文件)
  • 验证src/main/resources/application.properties是否被正确打包到target目录,查看该文件中的spring.profiles.active值是否为dev
  1. 清理IDE缓存与构建产物
  • 执行Maven/Gradle的clean和build命令,清理旧构建文件
  • 重启STS4并重新加载项目,避免IDE缓存导致的配置未更新
  1. 检查代码硬编码配置
    查看启动类是否添加了@ActiveProfiles("prod")注解,或是否存在自定义的EnvironmentPostProcessor等组件修改了激活的profile。

内容的提问来源于stack exchange,提问作者Park JongBum

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 13:02:32