如何配置Spring bean容器来加载Java属性文件?

如何配置Spring bean容器(或应用程序上下文)来加载Java属性文件?

JavaWorld文章Smartly Load Your Properties说明了如何使用标准Java库中的以下资源处理方法之一从类路径加载属性文件:

ClassLoader.getResourceAsStream ("some/pkg/resource.properties"); Class.getResourceAsStream ("/some/pkg/resource.properties"); ResourceBundle.getBundle ("some.pkg.resource"); 

你如何使用Spring bean容器做同样的事情?

Spring Framework Reference Documentation(2.5.x)提供了两个如何将属性文件加载到bean容器中的示例,一个在版本2.5发布之前,另一个使用在函数中引入的简洁方法。版本2.5:

2.5版之前:

     

版本2.5之后:

   

请注意,为了使用 ,您必须在Spring XML配置文件顶部的前导码中声明util命名空间和架构位置:

     

您的beans.xml文件应该有一个PropertyPlaceholderConfigurer

    classpath:some/pkg/resource.properties      value    

然后,您可以在beans.xml其他位置引用这些属性:

  ....  

有关此内容的文章,请查看http://almaer.com/blog/spring-propertyplaceholderconfigurer-a-nice-clean-way-to-share

例如,通过PropertiesFactoryBean 。 使用PropertyPlaceholderConfigurer通过属性在上下文中配置bean。

您将在其他答案中找到PropertyPlaceholderConfigurer示例。 这是一个PropertiesFactoryBean示例:

    

有一个名为PropertyPlaceholderConfigurer的东西,您可以使用它向您的bean注入属性文件中的值,如下所示:

   classpath:com/foo/jdbc.properties         

我们用这个:

    classpath:test.properties   

这允许在那里定义的属性用作配置文件中的引用

有关详情,请参阅:

http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.html

如果要将对象作为java.util.Properties的实例引用,则应执行以下操作:

  true   classpath:property-file.properties    

这允许您将Spring bean properties引用为java.util.Properties的实例。 您甚至可以通过向location添加更多值将其合并到多个属性文件中。 有关Spring将接受的位置值的类型的信息,请参阅资源字符串的此描述。 如果您想在Spring XML中使用${}样式替换,您可以看到有许多其他答案描述了如何执行此操作。