SpringBoot yaml中的數組類型取值方式

yaml中的數組類型取值

yaml中簡單的風格,十分受大傢的歡迎

先說下簡單的配置如何取值

# application-dev.yml
 testValue:
  testValueChild: testValueChildValue
...
// SomeServiceImpl.java
@Service
public class SomeServiceImpl {
 // 這樣就可以直接拿到配置信息啦
  @Value("${testValue.TestValueChild}")
  private String testValueChild;
 ...
}

有些時候我們會需要一些數組類型,下面簡單介紹一種配置信息為數組的寫法,比如我們有以下格式的配置,數據同步是否開啟,以及數據同步需要同步的數據類型,

dataSync:
  enable: true
  type: 
    - "1"
    - "2"
    - "3"

此時無法使用@Value取值,可通過如下方式取值,

...
// 單獨註冊一個bean,用於存儲這類配置信息
@Component
@Data
@ConfigurationProperties(prefix = "data-sync")
public class DataSyncConfig {
    private Boolean enable;
    private List<String> types;
}
...
public class SomeServiceImpl{
  @AutoWired
  private DataSyncConfig dataSyncConfig;
  
public void youerMethod() {
  List<String> types = dataSyncConfig.getTypes();
}  
}

springboot配置文件yml的數組形式

配置文件

proxy:
    url:
    - "http://www.baidu.com"
    - "http://www.jd.com"   

實體類

@Data
@NoArgsConstructor
@AllArgsConstructor
@Configuration
@ConfigurationProperties(prefix = "proxy")
public class ProxyConfig {
    private String[] url;
}

對象裡面的引用名字(‘url’),必須和yml文件中的(‘url’)一致,不然就會取不到數據。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: