我目前正在开发一个需要使用凭据访问API的应用程序。我不想将它们硬编码到应用程序中,所以我为它们创建了一个configuration.properties文件。
此文件位于src / main / resources中,并使用以下代码访问它。
<context:property-placeholder location="classpath:configuration.properties" ignore-unresolvable="true" />
这意味着如果我在配置中更改某些内容,则需要重新部署WAR。
我的问题是:我在哪里放置此配置文件,以便在配置发生变化时不需要重新部署?
我不想在计算机上随意放置它,以便我可以与其他人共享我的代码而不会对文件的位置造成太大麻烦。
答案 0 :(得分:2)
我通过将我的属性文件放在Tomcat中解决了它“D:\ Documents \ workspace.metadata.plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps”
使用以下属性占位符
访问它<context:property-placeholder location="file:${catalina.base}/conf/configuration.properties" ignore-unresolvable="true" />
答案 1 :(得分:1)
我认为你已经接近了。
我同意这是一个很好的方法来获得一个.war文件并在任何地方重复使用它而不将其应用于特定环境。这意味着你不能将它包含在.war
中我要做的是使用程序集插件创建配置zip文件(如果有多个变体)。例如来自/ src / main / config / env1
然后使用环境变量指向该文件夹。 然后,spring中的属性占位符配置程序事物通过该系统属性而不是类路径引用该位置:
这些zip文件可以用来部署.war文件(通过ssh使用ant runner插件或其他方式)
它也可以用于日志记录配置。 Spring有一个解析器,如果在文件系统上更改它,它甚至会重新加载日志配置。