1. 程式人生 > >Spring @Value("${property:xxx}") 預設值

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