java - 使用Gradle在Spring Boot中从环境变量设置spring.profiles.active

标签 java spring-boot gradle

我公司有一种标准方法,可以通过使用环境变量APP_ENV来指定Web服务应在其中运行的环境,特别是“开发”和“生产”。这些环境中的每一个都有一个单独的配置文件:application-dev.yml和application-prod.yml。
在 Spring 启动中,我们可以使用SPRING_PROFILES_ACTIVE或等效方法来执行此操作,但是我真正想做的是从APP_ENV中获取VALUE,并将其用作配置文件。
我有一些代码

SpringApplication app = new SpringApplication(Application.class);
springApp.setAdditionalProfiles(System.getenv("APP_ENV"););
springApp.run(args);
关于如何做到这一点的一些技巧?我越来越
各种gradle任务上的java.lang.IllegalStateException: Failed to load ApplicationContext错误使该解决方案变得脆弱。

最佳答案

您可以使用System.getProperty,它将始终返回如下所示的字符串,

springApp.setAdditionalProfiles(System.getProperty("APP_ENV", "dev"));
在上面的代码片段中,我们使用System.getProperty(“APP_ENV”)提取属性APP_ENV的值。我们还将利用默认值,因此,如果该属性在系统中不可用,则getProperty将返回dev。

关于java - 使用Gradle在Spring Boot中从环境变量设置spring.profiles.active,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63947311/

相关文章:

java - Node ACS 404 未找到对 Java http 客户端的响应代码

java - Servet - 为什么我会收到空​​指针异常?

java - Spring Security 对某些 URL 进行授权并拒绝所有其他 URL

java - 使用 MockMvc Http Status 错误测试 @ControllerAdvice

android - 我可以使用 Gradle 缩小 dex 中的 65k 方法限制吗?

java - 非法参数异常 : No interpolator found for float during implementing Substance LAF

java - 从整数到整数的 AES 加密

java - 使用泛型实现对象转换器设计模式

java - tomcat 上的 Spring Boot war 文件 : errorPageFilter cannot be cast to TomcatEmbeddedServletContainerFactory

java - 用于警报的 Datadog Java API