1

寻找一种能够在 Spring 属性中为我们提供更多功能的解决方案,例如:

  • 嵌套结构
  • 地图/列表
  • 属性引用其他属性。例子:
    • city.name=多伦多
    • city.address=#{city.name}, 123 Ave SW

我尝试了 EProperties (Google) 和 Commons Configurations (Apache),但似乎与 Spring 框架的集成不太好。

此外,我们使用Velocity来访问使用#springMessage("city.address")的属性,因此它需要为此工作。

有谁知道我如何通过扩展默认属性功能来实现上述目标?

4

1 回答 1

0

使用最新版本的 Spring,您可以使用 PropertySource 机制。您注册了所有的 PropertySource 以及它们被搜索的顺序,然后您不必做任何事情,除了可能将其添加到您的 XML 中:

<context:property-placeholder />

只要您只声明其中一个而不指定本地属性文件(“旧方式”),您就可以将属性 A 引用为属性 B 的值,即使它们不在同一个属性源中。

对于嵌套结构,如果您不喜欢属性可读性,这可能会有所帮助: https ://stackoverflow.com/a/13470704/82609

对于解析问题,您可以很容易地手动处理列表和其他类似的东西: Reading a List from properties file and load with spring annotation @Value

于 2013-04-25T22:24:14.197 回答