springboot讀取yml文件中的list列表、數(shù)組、map集合和對象方法實(shí)例
前言
springboot配置文件yml類型簡單的風(fēng)格,十分受大家的歡迎,支持字符string類型,支持列表list類型,支持集合map類型,支持?jǐn)?shù)組array類型,支持類對象類型,下面我們來實(shí)戰(zhàn)下這些形式的配置如何取值
application.yml定義list集合
第一種方式使用@ConfigurationProperties注解獲取list集合的所有值
type:
code:
status:
- 200
- 300
- 400
- 500
編寫配置文件對應(yīng)的實(shí)體類,這里需要注意的是,定義list集合,先定義一個(gè)配置類Bean,然后使用注解@ConfigurationProperties注解來獲取list集合值,這里給大家講解下相關(guān)注解的作用
- @Component 將實(shí)體類交給Spring管理
- @ConfigurationProperties(prefix = “type.code”) 讀取yml文件中的list
- @Data 自動(dòng)生成getter和setter方法
如下圖所示
package com.o2o.data;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import java.util.List;
@Component
@ConfigurationProperties(prefix = "type.code") // 配置文件的前綴
@Data
public class TypeCodeConfig {
private List<String> status;
public void setStatus(List<String> status){
this.status = status;
}
public List<String> getStatus(){
return status;
}
}
然后在要使用的地方自動(dòng)注入,我是直接在啟動(dòng)類中讀取這個(gè)list,需要注意,使用yml中配置的list需要先將對象注入,然后通過get方法讀取配置文件中的的值。
- @Autowired private TypeCodeConfig typeCodeConfig; 使用注解將對象注入
- System.out.println(typeCodeConfig.getStatus()); 調(diào)用getter方法讀取值
package com.o2o;
import com.o2o.data.TypeCodeConfig;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@MapperScan("com.o2o.mapper")
public class AutoTestApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(AutoTestApplication.class, args);
}
@Autowired
private TypeCodeConfig typeCodeConfig;
@Override
public void run(String... args) throws Exception {
System.out.println(typeCodeConfig.getStatus());
啟動(dòng)springboot我們已經(jīng)從控制臺成功讀取到y(tǒng)ml文件中l(wèi)ist集合的所有值了

第二種方式使用@value注解獲取list集合的所有值
yml文件配置如下
student:
ids:
- 7
- 8
- 9
然后創(chuàng)建一個(gè)實(shí)體類
@Data
public class Student {
@Value("${student.ids}")
private List<Integer> ids;
}
再新建一個(gè)對list屬性的配置類
@Component
@ConfigurationProperties(prefix = "student")
@Data
public class TypeCodeConfig {
private List<Integer> ids;
public void setIds(List<Integer> ids) {
this.ids = ids;
}
public List<Integer> getIds(){
return ids;
}
在啟動(dòng)類中注入
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@MapperScan("com.o2o.mapper")
public class AutoTestApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(AutoTestApplication.class, args);
}
@Autowired
private TypeCodeConfig typeCodeConfig;
@Override
public void run(String... args) throws Exception {
System.out.println(typeCodeConfig.getIds());
}
啟動(dòng)springboot我們已經(jīng)從控制臺成功讀取到y(tǒng)ml文件中l(wèi)ist集合的所有值了

application.yml定義數(shù)組類型
yml配置文件如下圖所示
dataSync: enable: true type: - "1" - "2" - "3"
通過@value注解獲取數(shù)組值
@Value("${dataSync.enable.type}")
private String[] type;
也可以通過創(chuàng)建配置類bean,使用@ConfigurationProperties注解獲取,如下圖所示:
@Data
@Component
@ConfigurationProperties(prefix = "dataSync.enable") // 配置 文件的前綴
public class InterceptorPathBean
{
private String[] type;
}
yml文件還可以存放對象和對象的集合,使用方法與基本類型類似。
簡單舉例:
定義map集合配置
interceptorconfig:
path:
maps:
name: 小明
age: 24
通過創(chuàng)建配置類bean,使用@ConfigurationProperties注解獲取map值,如下圖所示
@Data
@Component
@ConfigurationProperties(prefix = "interceptorconfig.path") // 配置 文件的前綴
public class InterceptorPathBean
{
private Map<String , String> maps;
}
使用對象配置
student: id: 1 name: Bruce gender: male
使用對象集合配置
students:
- id: 1
name: Bruce
gender: male
- id: 2
name: ...
...
這里我給大家總結(jié)一些需要重要的點(diǎn):
1、list類型的yml配置文件中,需要使用"-"來組成一個(gè)列表集合。
2、yml中的前綴沒有層級限制,如果是多層級,比如這里的demo/code,在java類中配置ConfigurationProperties注解的prefix就寫作"demo.code"
3、屬性名稱在yml文件中支持連字符"-",比如four-span,在java類中配置屬性就需要轉(zhuǎn)為駝峰式,fourSpan。
4、java類屬性需要配置set,get方法。
總結(jié)
到此這篇關(guān)于springboot讀取yml文件中的list列表、數(shù)組、map集合和對象的文章就介紹到這了,更多相關(guān)springboot讀取yml文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談Java中SimpleDateFormat 多線程不安全原因
SimpleDateFormat是Java中用于日期時(shí)間格式化的一個(gè)類,本文主要介紹了淺談Java中SimpleDateFormat 多線程不安全原因,感興趣的可以了解一下2024-01-01
解讀Jvm的內(nèi)存結(jié)構(gòu)與GC及jvm參數(shù)調(diào)優(yōu)
這篇文章主要介紹了解讀Jvm的內(nèi)存結(jié)構(gòu)與GC及jvm參數(shù)調(diào)優(yōu)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
SpringBoot+Vue項(xiàng)目部署實(shí)現(xiàn)傳統(tǒng)方式
我們在進(jìn)行前后端分離開發(fā)的時(shí)候,一般是將前端項(xiàng)目部署到nginx服務(wù)器上,與后端項(xiàng)目分開部署,這篇文章主要給大家介紹了關(guān)于SpringBoot+Vue項(xiàng)目部署實(shí)現(xiàn)傳統(tǒng)方式的相關(guān)資料,需要的朋友可以參考下2024-01-01
詳解Spring事件發(fā)布與監(jiān)聽機(jī)制
Spring提供了ApplicationContext事件機(jī)制,可以發(fā)布和監(jiān)聽事件,這個(gè)特性非常有用。Spring內(nèi)置了一些事件和監(jiān)聽器,例如在Spring容器啟動(dòng)前,Spring容器啟動(dòng)后,應(yīng)用啟動(dòng)失敗后等事件發(fā)生后,監(jiān)聽在這些事件上的監(jiān)聽器會(huì)做出相應(yīng)的響應(yīng)處理2021-06-06
基于SpringBoot啟動(dòng)類靜態(tài)資源路徑問題
這篇文章主要介紹了SpringBoot啟動(dòng)類靜態(tài)資源路徑問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09

