簡體   English   中英

使用默認變量設置 @Value 注釋

[英]Setting @Value annotation with default variable

是否可以默認使用帶有變量的@Value 注釋?

我有一個變量processingYear ,我想從屬性中讀取,如果它無法從屬性中讀取,我想將當前年份分配給變量。

@Value("${processing_year:2021}")
int processingYear;

使用上面的特定代碼,我可以從屬性文件中讀取processingYear並為其賦值,如果從屬性讀取失敗,變量將設置為 2021。

但是,我看不到將當前年份分配為默認變量currentYear的方法。 以下是我的想象,並想看看是否有任何東西可以為其分配默認變量。

    LocalDate date = LocalDate.now();
    Locale locale = Locale.US;

    int currentYear = Integer.parseInt(date.format(DateTimeFormatter.ofPattern("yyyy",locale)));

    @Value("${process_year:currentYear}")
    int processingYear;

好吧,你可以用@Value做到這一點

試試這個:

@Value("${currentYear:#{(T(java.time.Year).now().getValue())}}")
private int year;

是的,您可以提供如下:

@Value("${processing_year:5}")
int processingYear;

:之后提供默認值。 這會將默認值5分配給processingYear

如果要提供其他值,則需要以#為前綴:

@Value("$someObj.value:#{null}}")
Object someObj;

@Value("#{'${someObject.stringlist:}'.split(',')}")
Collection<String> strings;

如果需要設置變量,則需要使用@Value和 setter 方法:

int processingYear;

@Value("${process_year:-1}")
private void setProcessingYear(int year) {
    if(year == -1) {
        // -1 used to identify that no value was passed. so in this case we use currentyear.
        year = currentyear;
    }
    processingYear = year;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM