我正在尝试为我的媒体资源实施特定于层的后备系统。
我知道像Spring这样的更高级的框架已经内置了对此的支持,但是我使用的是最小的Spark Java框架。
说我具有以下结构-
src/
main/
resources/
properties/
dev/
|- application.properties
|- ValidationMessages.properties
|- log4j.properties
prod/
|- application.properties
|- ValidationMessages.properties
|- log4j.properties
test/
|- application.properties
|- ValidationMessages.properties
|- log4j.properties
application.properties
ValidationMessages.properties
log4j.properties
我希望属性的来源如下。假设我有一个系统配置APP.TIER
,让我在运行时知道当前层是什么(test
,dev
,prod
等)
properties/application.properties
)都应适用于所有层properties/${APP.TIER}/application.properties
)中任何特定于层的属性都应覆盖通用值至少使用应用程序属性,我可以在main()
方法开始时以编程方式加载它们,并使它们在整个应用程序中可用(example)。我还可以控制它们的加载顺序,因此确保我手动应用了上述后备逻辑。
但是对于第三方插件(例如Hibernate使用的ValidationMessages.properties
或log4j使用的log4j.properties
),我无法控制属性的加载方式。
是否存在支持此类财产来源的通用框架?我知道maven支持配置文件和过滤,但这意味着我必须为每个层构建一个单独的JAR文件,这似乎不是一个好习惯。