繁体   English   中英

将已解析的属性对象注入另一个Bean

[英]Inject Resolved Properties Object to Another Bean

我想通过XML配置将java.util.Properties对象注入另一个bean。 我已经尝试过这里列出的解决方案但没有成功,大概是因为bean在属性解析发生之前被注入了。 有没有办法可以在注入我的类之前强制解析java.util.Properties对象?

以下是我所拥有的修剪/编辑版本。 PropertiesConsumingClass确实接收a,b和c属性文件的合并但未解析的属性。

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="properties" ref="allProperties" />
</bean>

<bean id="allProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
  <property name="propertiesArray">
    <util:list>
      <util:properties location="classpath:a.properties" />
      <util:properties location="classpath:b.properties" />
      <util:properties location="classpath:c.properties" />
    </util:list>
  </property>
</bean>

<bean class="PropertiesConsumingClass">
  <constructor-arg index="0" ref="allProperties" />
</bean>

您的示例不起作用,因为Spring调用属性与Java调用属性不同。 基本上,Spring属性存在于<property>标记中,这是PropertyPlaceholderConfigurer解决的问题。 您还可以在@Value注释中使用属性占位符。 无论哪种方式,你都有一个带有${}占位符的字符串得到解析,可能字符串被转换为正确的类型,并注入到你的bean中。

java.util.Properties用于解析Spring属性中的占位符,但不考虑它们本身的解析。 a中的任何属性a. b. 或者c.properties将被替换为Spring属性占位符,但是PropertyPlaceholderConfigurer不知道或不关心它从这些文件中获取的值是否包含${}

现在, Spring Boot确实解决了其配置文件中的占位符,但它有特殊的作用。 它也是一个非常自以为是的图书馆,想要控制你的应用程序的生命周期并在幕后做很多神奇的事情,所以除了在项目的最初阶段,它很难采用或删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM