1. 程式人生 > >Spring @Value 設定預設值

Spring @Value 設定預設值

轉載: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應用的搭建、開發、部署過程。

8.參考連結