开发者社区> 问答> 正文

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

spring配置文件中就没有条件判断吗?

如下所示:

if(${redis.password} == null || ${redis.password} =="")
<constructor-arg name="password"><null/></constructor-arg>
else
<constructor-arg name="password" value="${redis.password}"></constructor-arg>

展开
收起
a123456678 2016-03-18 09:34:39 2942 0
1 条回答
写回答
取消 提交回答
  • 使用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

    2019-07-17 19:05:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多