我将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?
答案 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