Spring @Value 設定預設值
阿新 • • 發佈:2019-02-10
轉載:https://zhuanlan.zhihu.com/p/32337634
1. 概述
在 Spring 元件中使用 @Value 註解的方式,很方便的讀取 properties 檔案的配置值。
2.使用場景
宣告的變數中使用。
public static class FieldValueTestBean {
@Value("#{ systemProperties['user.region'] }")
private String defaultLocale;
}
setter 方法中。
public static class PropertyValueTestBean {
private String defaultLocale;
@Value("#{ systemProperties['user.region'] }")
public void setDefaultLocale(String defaultLocale) {
this.defaultLocale = defaultLocale;
}
}
方法。
public class SimpleMovieLister {
private MovieFinder movieFinder;
private String defaultLocale;
@Autowired
public void configure(MovieFinder movieFinder,
@Value("#{ systemProperties['user.region'] }") String defaultLocale) {
this.movieFinder = movieFinder;
this.defaultLocale = defaultLocale;
}
// ...
}
構造方法。
public class MovieRecommender {
private String defaultLocale ;
private CustomerPreferenceDao customerPreferenceDao;
@Autowired
public MovieRecommender(CustomerPreferenceDao customerPreferenceDao,
@Value("#{systemProperties['user.country']}") String defaultLocale) {
this.customerPreferenceDao = customerPreferenceDao;
this.defaultLocale = defaultLocale;
}
// ...
}
3. 字串
字串型別的屬性設定預設值。
@Value("${some.key:my default value}")
private String stringWithDefaultValue;
some.key 沒有設定值,stringWithDefaultValue 變數值將會被設定成 my default value 。
如果預設值設為空,也將會被設定成預設值。
@Value("${some.key:}")
private String stringWithBlankDefaultValue;
4. 基本型別
基本型別設定預設值。
@Value("${some.key:true}")
private boolean booleanWithDefaultValue;
@Value("${some.key:42}")
private int intWithDefaultValue;
包裝型別設定預設值。
@Value("${some.key:true}")
private Boolean booleanWithDefaultValue;
@Value("${some.key:42}")
private Integer intWithDefaultValue;
5. 陣列
陣列的預設值可以使用逗號分割。
@Value("${some.key:one,two,three}")
private String[] stringArrayWithDefaults;
@Value("${some.key:1,2,3}")
private int[] intArrayWithDefaults;
6. SpEL
使用 Spring Expression Language (SpEL) 設定預設值。
下面的程式碼標示在systemProperties屬性檔案中,如果沒有設定 some.key 的值,my default system property value 會被設定成預設值。
@Value("#{systemProperties['some.key'] ?: 'my default system property value'}")
private String spelWithDefaultValue;
7.結語
上面講解使用 Spring @Value 為屬性設定預設值。在專案中,提供合理的預設值,在大多情況下不用任何配置,就能直接使用。達到零配置的效果,降低被人使用的門檻。簡化新Spring應用的搭建、開發、部署過程。