spring配置文件中就没有条件判断吗?
如下所示:
if(${redis.password} == null || ${redis.password} =="")
<constructor-arg name="password"><null/></constructor-arg>
else
<constructor-arg name="password" value="${redis.password}"></constructor-arg>
使用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.SpelEva
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。