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