iT邦幫忙

0

漂亮地將application.properties注入類別變數

  • 分享至 

  • xImage
  •  

以前通常會使用@Value來將application.properties的值注入類別變數:

application.yml

limit: 
  speed: 100

class Car

@Data
class Car{
    String model;
    
    @Value(speed.max)
    String speed;
}

後來發現有個@ConfigurationProperties的註解可以很乾淨地做到注入Collection變數:

application.yml

nissan:
  cars:
    - model: sentra
      speed: 100
    - model: GTR
      speed: 300

CarShop

@ConfigurationProperties(prefix = "nissan")
class CarShop{
    List<Car> cars;
    
    public List<Car> getCars(){
        return cars;
    }
    
    public void setCars(List<Car> cars){
        this.cars = cars;
    }
}

只要這樣設定後,SpringBoot就會自動把application.yml中的nissan.cars注入到CarShop的cars類別變數。要做到這件事有幾個條件:

  1. @ConfigurationProperties的prefix參數與application.yml的prefix對齊
  2. prefix後一個變數名稱與類別變數名稱對齊
  3. Collection的泛型型態變數名稱與其他application.yml變數名稱對齊

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言