我定义了一个属性持有者:
<util:properties id="myProps" location="file:my.properties" />
然后我可以在#{}
中使用<property>
表达式:
<bean id="mybean" class="test.MyBean">
<property name="hello" value="#{ myProps['hello'] }"/>
</bean>
但是当我定义这个bean时:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="myDataSource"/>
<property name="packagesToScan" value="test.domain"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">#{ myProps['db.timeout']}</prop>
</props>
</property>
</bean>
我的Intellij-IDEA标记#{ myProps['db.timeout']}
为红色,并有提示:
Can't resolve symbol: #{ myProps['db.timeout']}
是否支持#{}
表达式?以及如何解决这个问题?
感谢subhashis的答案,但我忘了提到由于某些设计限制,我不能在项目中使用org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
。
答案 0 :(得分:0)
是的,它支持表达式,但不使用#use $,请参阅下面的示例
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>database.properties</value>
</property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>