Spring框架的扩展属性

时间:2013-04-25 18:07:27

标签: spring properties apache-commons-config

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

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

我尝试过EProperties(Google)和Commons Configurations(Apache),但似乎并没有很好地与Spring Framework集成。

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

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

1 个答案:

答案 0 :(得分: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