如何在 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配置路径变量如下:<property name="spring.config.location" value="file:$jboss.server.config.dir/" />
【参考方案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 8.2 Final中将lib添加到模块中?
如何在 tvOS 中将外部 .vtt 字幕文件添加到 AVPlayerViewController