当我使用Zend Framework时,我曾经有.ini
配置文件,我可以在其中执行以下操作:
[production]
setting1 = abc
setting2 = def
[development : production]
setting1 = ghi
当我打开development
应用程序配置文件时,setting1
的值为ghi
,而在投影模式中为abc
。是否可以在Apache Commons配置中定义这样的继承设置?
我知道我可以定义多个配置文件并从中创建CompositeConfuration,但如何告诉应用程序它应该只包括不同模式下的特定文件?我还不知道如何设置这些应用程序配置文件,但另一个名为PROFILE
的设置应该为我完成这项工作
如果可能的话,我不想将设置拆分到多个文件中。
我找不到任何关于如何在Java中实现这一点的信息。
Apache配置将配置选项从文件读取到内存数据结构中。除了变量扩展之外,默认情况下没有进一步的后处理。所以你的选择是:
-
将所有选项放在默认配置中,然后使用单独的";Δ;覆盖默认值的配置。将这些单独的文件与
CompositeConfiuration
合并。这个设计遵循Java的继承模型:基本类型,您可以扩展它来覆盖一些值并添加新值。
-
创建一个后处理程序,它接受巨大的配置,并将其转换为应用了首选合并规则的新配置。
-
创建一个助手对象,通过配置中的键查找值。这将允许您在查找时进行合并。