Spring上下文:属性占位符表示布尔值

时间:2014-01-13 11:45:25

标签: java spring boolean applicationcontext

我正在开发一个应用程序,我有两个类都实现了一个通用接口。因此,在bean声明的时候,我将在app-context.xml文件中将其中一个标记为primary。我可以通过简单地声明主bean来实现这一点:

<bean id="oracleImpl" class="com.me.dao.OracleImpl" primary="true">
</bean>

现在我不想硬编码哪个bean将成为主bean,而是想从属性文件中读取true / false值。所以我这样做了:

<context:property-placeholder location="classpath:jdbc.properties"/>

<bean id="oracleImpl" class="com.me.dao.OracleImpl" primary="${oracle.primary}">
</bean>

<bean id="pgsqlImpl" class="com.me.dao.PgsqlImpl" primary="${pgsql.primary}">
</bean>

oracle.primary和pgsql.primary的值在文件jdbc.properties中定义,以及其他jdbc(非布尔)属性。

但它不起作用并且说,“'$ {oracle.primary}'不是'boolean'的有效值”

我觉得这与xsd验证器有关。浏览这个网站和谷歌给了我很多想法,但没有真正的解决方案。任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

这不起作用。

从3.2.5.RELEASE开始,只有以下bean定义才支持属性占位符:

  • 父母姓名
  • bean类名称
  • 工厂bean名称
  • 工厂方法名称
  • 范围
  • 属性值
  • 索引构造函数参数
  • 泛型构造函数参数

有关详细信息,请参阅BeanDefinitionVisitorvisitBeanDefinition方法。 PlaceholderConfigurerSupport使用此方法。

我建议您在spring issue management system中创建功能请求。

PS:如果您创建了问题,请在问题网址上添加评论。