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

 我来答
ifeilong
2016-09-16 · TA获得超过8068个赞
知道大有可为答主
回答量:1187
采纳率:100%
帮助的人:785万
展开全部

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.SpelEvaluationException: EL1008E:(pos 0): Field or property 'foobared' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext'

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式