Spring @Value("${property:xxx}") 缺省值


1. @Value Examples
To set a default value in Spring expression, use Elvis operator :

    #{expression?:default value}
Copy
Few examples :

    @Value("#{systemProperties['mongodb.port'] ?: 27017}")
    private String mongodbPort;
 
    @Value("#{config['mongodb.url'] ?: '127.0.0.1'}")
    private String mongodbUrl;    
    
    @Value("#{aBean.age ?: 21}")
    private int age;
Copy
P.S @Value has been available since Spring 3.0

2. @Value and Property Examples
To set a default value for property placeholder :

    ${property:default value}
Copy
Few examples :

    //@PropertySource("classpath:/config.properties}")
    //@Configuration
    
    @Value("${mongodb.url:127.0.0.1}")
    private String mongodbUrl;
    
    @Value("#{'${mongodb.url:172.0.0.1}'}")
    private String mongodbUrl;
    
    @Value("#{config['mongodb.url']?:'127.0.0.1'}")
    private String mongodbUrl;
Copy
config.properties
mongodb.url=1.2.3.4
mongodb.db=hello
那个 default value,就是前面的property不存在时的默认值。

写个例子测试一下:

app.properties:

last.time=10
spring配置:

    <bean id="configProperties"
        class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="fileEncoding" value="UTF-8" />
        <property name="locations">
            <list>
                <value>classpath:app.properties</value>
            </list>
        </property>
    </bean>
    <bean id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
        <property name="properties" ref="configProperties" />
    </bean>
测试代码:

    @Value("${last.time:300}")
    private String lastTime;
    
    @Test
    public void test2() {
        System.out.println(lastTime);
    }
输出:10

把app.properties注释

#last.time=10
输出:300
 

猜你喜欢

转载自blog.csdn.net/wxb880114/article/details/84029227