如何在特定bean的本地定义PropertyPlaceholderConfigurer?

时间:2019-06-13 05:35:19

标签: spring

我一直在使用org.springframework.beans.factory.config.PropertyPlaceholderConfigurer,根据我的经验(“需要引用”,哈哈),它会全局设置属性值。

是否可以在同一应用程序上下文xml中为不同的bean指定不同的PropertyPlaceholderConfigurer实例?

我当前的代码类似于

<bean id="a" class="X">
  <property name="foo" value="bar"/>
  <property name="many" value="more"/>
</bean>

<bean id="b" class="X">
  <property name="foo" value="baz"/>
  <property name="number_of_properties" value="a zillion"/>
</bean>

我想做类似的事情(下面的伪代码):

<bean id="a" class="X">
  ... parse the contents of "a.properties" here ...
</bean>

<bean id="b" class="X">
  ... parse the contents of "b.properties" here ...
</bean>

上面是不起作用的伪代码来说明这个概念;关键是,我希望使用不同的属性文件来填充每个bean。

为什么?

我想在单独的属性文件中而不是在XML中拥有这些特定的属性。

1 个答案:

答案 0 :(得分:0)

我认为以下链接可以为您提供帮助。 Reference Link

其中@Value(“ $ {my.property.name}”)批注用于将属性文件绑定到类型为Properties的变量,该变量将驻留在您打算使用该属性文件的bean类中。

,您可以如下定义多个属性占位符:

<bean id="myProperties"
      class="org.springframework.beans.factory.config.PropertiesFactoryBean">
  <property name="locations">
    <list>
      <value>classpath*:my.properties</value>
    </list>
  </property>
</bean>

,并在bean变量中使用id作为参考,以将属性文件初始化为bean。

与占位符bean一起包含将很方便。

请参阅Importance of Unresolvable Placeholder链接以获取有关其用法的详细信息。

希望这会有所帮助。