Tomcat中的Spring Boot .war - 我可以使用外部属性文件吗?

时间:2016-01-28 16:27:21

标签: spring tomcat spring-boot jndi

我将Spring Boot应用程序打包为.war文件,它在Tomcat 7中的文件路径/opt/tomcat/webapps/myapp.war下运行。

但是,我想使用/var/{filePath}/application.properties中文件的属性,其中filePath尚未知。我已经阅读了Spring Boot docs,我怀疑最好的方法是使用JNDI属性。

我在context.xml中配置了一个资源,如下所示:

<Resource auth="Container" type="java.lang.String" name="myProperties" url="/var/myDirectory/application.properties"/>

这是对的吗?

如果是这样,我怎么能将这些属性注入我的Spring Boot应用程序,考虑到它是.war?

2 个答案:

答案 0 :(得分:1)

回答我自己的问题:)

我将以下内容添加到我的Tomcat context.xml中:

<Parameter name="agent-tools-api.properties" value="/var/zoona/agent-tools-api.properties" />

并在Application.java上添加了相应的@PropertySources注释:

@SpringBootApplication
@PropertySources(@PropertySource(value = {"file:${agent-tools-api.properties}"}))
public class Application extends SpringBootServletInitializer {
   // Application class
}

因此它从另一个属性获取属性文件路径。有点复杂,但它确实有效。

欢迎评论!

答案 1 :(得分:0)

我在tomcat的catalina.sh中使用了类似这样的东西作为环境变量,spring能够检测到它。

export SPRING_CONFIG_LOCATION = / krishna / software / repository / conf / trimble / application.properties