【问题标题】:Extended Properties for Spring FrameworkSpring 框架的扩展属性
【发布时间】:2013-04-25 18:07:26
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: spring properties apache-commons-config


    【解决方案1】:

    使用最新版本的 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

    【讨论】:

    • 我会试一试,如果它对我们有用,我会告诉你。感谢您的建议塞巴斯蒂安。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 2014-02-27
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    相关资源
    最近更新 更多