依赖项的Spring引导环境特定属性

时间:2018-05-25 01:04:52

标签: java spring spring-boot properties spring-profiles

我很好奇什么是依赖项的环境(甚至服务器)特定属性的最佳实践。

这不适用于由applicationContext管理的属性,因为我知道Spring支持的{env} -application.properties约定。

我将举一个小例子来详细说明:

我的项目是项目A.在A中,我们依赖项目B

A的pom.xml

<dependency>
     <groupId>com.B</groupId>
     <artifactId>B</artifactId>
</dependency>

工件B依赖于B.properties,它没有提供,它必须在类路径上。我无法重构神器B。

B.properties的内容是:

b.someproperty=${property.placeholder}/b/dir

application.properties的内容:

property.placeholder=default

dev-application.properties的内容:

property.placeholder=dev

因此,当我使用-Dspring.profiles.active = dev运行我的spring启动应用程序时,b.someproperty必须解析为dev / b / dir

到目前为止我尝试过的(有效):

1)位于服务器上的外部化属性,占位符已经解析,只是在运行时将它们添加到类路径中(因此每个服务器都有自己的B.properties文件,没有占位符,这不属于构建/部署过程)

2)spring可引导jar中的类获取b.properties中的属性,解析所有占位符,并将其写入服务器上的文件,然后将此文件添加到类路径中。因此,使用-Dspring.profiles.active = dev运行应用程序将在没有占位符的服务器上生成b.properties,并且所有内容都包含在jar中。

这些解决方案都不是很干净,也不是很好(imo)。是否可以在使用属性时解析占位符,即使它们不是由应用程序上下文管理的呢?

对我当前解决方案的任何见解或批评都表示赞赏。

0 个答案:

没有答案