我正在开发一个应用程序,我有两个类都实现了一个通用接口。因此,在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验证器有关。浏览这个网站和谷歌给了我很多想法,但没有真正的解决方案。任何人都可以帮忙吗?
答案 0 :(得分:3)
这不起作用。
从3.2.5.RELEASE开始,只有以下bean定义才支持属性占位符:
有关详细信息,请参阅BeanDefinitionVisitor的visitBeanDefinition
方法。 PlaceholderConfigurerSupport使用此方法。
我建议您在spring issue management system中创建功能请求。
PS:如果您创建了问题,请在问题网址上添加评论。