如何在 Wildfly 中将外部属性文件加载到 Spring Boot

Posted

技术标签:

【中文标题】如何在 Wildfly 中将外部属性文件加载到 Spring Boot【英文标题】:How to load an external property file to Spring Boot in Wildfly 【发布时间】:2015-09-29 18:26:53 【问题描述】:

我想知道如何将在 Wildfly 9 中运行的应用程序的外部属性加载为 WAR,我尝试将 java 参数添加到 Wildfly 执行,但似乎应用程序无法识别这些属性。

-Dspring.config.location=file:///C:\Temp\config\application.properties,classpath:application.properties

Spring Boot 有什么方法可以读取外部属性文件?我正在尝试在 Wildfly 中加载并运行一个 Spring Boot 应用程序作为 WAR。

我将不胜感激。

谢谢。

【问题讨论】:

【参考方案1】:

在我的 linux 系统中,我在 standalone.xml 中有一个条目:

<system-properties>
    <property name="spring.config.location" value="file:/opt/jboss/wildfly/standalone/configuration/"/>
</system-properties>

我刚刚在这里定义了目录,所以它必须以“/”结尾。

在目录“/opt/jboss/wildfly/standalone/configuration/”中有我的application.yml。

【讨论】:

为避免设置特定路径,您可以使用内置的Wildfly配置路径变量如下:&lt;property name="spring.config.location" value="file:$jboss.server.config.dir/" /&gt;【参考方案2】:

如果您的 springboot 应用程序在 Wildfly 中运行,则无需将standalone.xml 作为外部文件读取。

直接用System.getProperty(PROPERTY_NAME);获取属性值

【讨论】:

【参考方案3】:

我知道答案有点晚了,但也许这会有所帮助:

在您的部署描述符 (web.xml) 中,创建指向 spring 配置位置文件的环境变量,即

  <?xml version="1.0" encoding="UTF-8"?>
  <web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
            http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
           version="3.0">
      <env-entry>
          <env-entry-name>spring.config.location</env-entry-name>
          <env-entry-type>java.lang.String</env-entry-type>
          <env-entry-value>file:[path-to-file]/[your-properties-file] 
</env-entry-value>
      </env-entry>
  </web-app>

在 Wildfly 25.0.0 上工作

【讨论】:

以上是关于如何在 Wildfly 中将外部属性文件加载到 Spring Boot的主要内容,如果未能解决你的问题,请参考以下文章

如何在 WildFly 10 中将爆炸战争部署为文件夹

如何在wildfly 8.2 Final中将lib添加到模块中?

如何在 tvOS 中将外部 .vtt 字幕文件添加到 AVPlayerViewController

在 Tomcat 8 中将外部资源添加到类路径

如何在 Vue-CLI 3 中将预取和预加载资源插入到我的自定义 HTML 文件中?

如何动态加载外部CSS与JS文件