如何外部化tomcat服务器中多个Web应用程序的配置?

时间:2018-09-20 12:49:45

标签: java spring spring-boot

我正在运行一个独立的tomcat网络服务器,其中包含多个不同的Web应用程序(war文件)。

问题:我想外部化一些敏感的application.properties字段,例如数据库帐户,每个字段对于每个应用程序都是分开的。

我可以在启动时提供以下属性: --Dspring.config.additional-location=/etc/java/

问题:每个Web应用程序都将加载相同的/etc/java/application-production.properties文件!所以那无济于事。

问题:如何按应用程序将它们分开,以便每个webapp都加载自己的其他外部文件?

就像在测试服务器上一样:

/etc/java/myapp1/application-test.properties
/etc/java/myapp2/application-test.properties

产品:

/etc/java/myapp1/application-production.properties
/etc/java/myapp2/application-production.properties

2 个答案:

答案 0 :(得分:1)

一种可行的方法是,创建键值文件,例如test1.env, test2.env...。内容为:

DB_URL=test1DB
DB_USR=hi
DB_PWD=pwd
...

在您的application.properties中,您可以使用占位符,例如db.url=${DB_URL}

在启动应用程序时,使用启动(外壳)脚本在{.1.env中使用export变量,并提供给定的env文件,以便可以在应用程序中填充正确的值.properties。

答案 1 :(得分:0)

创建一个仅包含敏感数据的新文件:

/src/main/resources/config/application-production.properties

并添加一个.gitignore,以便不会提交此特定文件进行版本控制。