Weblogic 12c:如何将"活动配置文件"传递给Spring Boot应用程序?

ele*_*ype 5 spring weblogic weblogic12c spring-boot

我正在开发一个Spring Boot应用程序,我必须让它在我们的Weblogic 12c服务器中运行,作为一场战争.

我试图找到一种方法将默认的Spring活动配置文件(此处此处的信息)传递给应用程序,而无需在计算机本身上设置环境变量.如果可能的话,我希望能够使用Weblogic管理控制台指定此配置文件.

我尝试使用" Environment / Servers / MyServer / Server Start / Arguments"选项,但我无法以这种方式使Spring加载指定的配置文件.我试过了,没有成功:

spring.profiles.active=dev
-Dspring.profiles.active='dev'
-Dspring.profiles.active=dev
-spring.profiles.active=dev
--spring.profiles.active=dev
Run Code Online (Sandbox Code Playgroud)

有没有想过是否可以spring.profiles.active使用Weblogic 传递给Spring?我需要传递" dev"," acc"或" prod".

更新:我会接受一个答案,解释.properties为应用程序配置使用不同文件的任何简单方法,具体取决于运行Sprint Boot应用程序的环境.这些.properties文件可以捆绑在应用程序本身中,也可以是外部的.但我需要至少尽可能触摸Weblogic运行的系统......没有环境变量,理想情况下也不会改变Weblogic文件!理想情况下,解决方案将涉及使用Weblogic管理控制台完成的某种操作,例如,将表示当前环境的参数传递给Spring Boot应用程序,以便使用正确的application.[ENVIRONMENT].properties文件.

更新2:允许每个环境拥有自己的application.properties文件的一种方法是使用部署计划.这可能是推荐的方法.我将补充一点作为答案,但我仍然倾向于采用一种更简单的方法......当我在Weblogic中部署参数时,我无法简单地将参数传递给应用程序!Environment / Servers / MyServer / Server Start / Arguments如果它不能用于那个目的,那么" 选择是什么?

更新3:相关主题.如果我理解正确," Environment / Servers / MyServer / Server Start / Arguments"选项可能仅在启用NodeManager时有效?这可以解释为什么我无法传递该spring.profiles.active=dev变量!

dev*_*per 3

application.properties您可以使用如下方式设置活动配置文件:

# PROFILES
spring.profiles.active= # Comma-separated list of active profiles.
Run Code Online (Sandbox Code Playgroud)

由于您在 WAR 中打包了多个属性文件(不推荐,而是在 war 外部提取动态属性),因此您可以用于@PropertySource(value = "classpath:application.dev.properties")定位应用程序要使用的特定属性文件。

你可以看这里