我想知道如何使用外部文件在不同的上下文中为我的应用加载一些属性..
我知道我可以在PropertySource
注释中传递一个文件。问题是文件的路径。
我的意思是,它看起来想要一个完整的文件路径,但不同的环境有Tomcat
目录的不同路径。
我的问题是: 存储此文件的正确目录在哪里(它必须在app dir的外部,否则在每次部署时都会被删除)以及如何在我的应用程序中链接它。
例如,现在我在tomcat的/config
目录中创建了一个/webapps
目录。
从我的Mac上我可以这样加载文件:
@PropertySource("file:/Library/Tomcat/webapps/config/db.properties" )
但我的生产应用程序在Linux服务器上,显然路径不同......
任何想法,或者更好的是,最好的做法是管理它吗?
由于
答案 0 :(得分:1)
我有一个类似的问题要解决一段时间,我们做的是我们在服务器启动时提供了外部目录路径到属性文件,如下所示:
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.annotation.PropertySources;
@Configuration
@PropertySources({@PropertySource("${ext.properties.dir:classpath:}/db.properties") })
public class ApplicationConfig {
}
对于基于XML的配置:
<context:property-placeholder
location="${ext.properties.dir:classpath:}/db.properties" order="-1"
ignore-unresolvable="true" ignore-resource-not-found="true" />
根据环境提供来自ext.properties.dir
的{{1}}值:
例如,对于DEV:
application-server/jvm
和PROD:
-Dext.properties.dir=file:/dev/Library/Tomcat/webapps/config/