Spring配置文件中就没有条件判断标签吗

如题所述

使用SpEL可以满足上述的需求,如下所示:

<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<array>
<value>classpath:/settings.properties</value>
</array>
</property>
</bean>

<constructor-arg name="password" value="#{'${redis.password}'?:null}"></constructor-arg>
<!--表示当redis.password不为空时,那么返回redis.password,否则返回null -->
<!-- 或者可以如下表示那么含义就更清晰了-->
<constructor-arg name="password" value="#{'${redis.password}'!=''?'${redis.password}':null}"></constructor-arg>

setting.properties:

redis.masterName=mymaster
redis.password=
redis.number=0

注意:一定要给${redis.password}显式加上单引号,否则它就会被解析为bean。从而报错:

Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 0): Field or property 'foobared' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext'
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网