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集合,先定義一個配置類Bean
,然后使用注解@ConfigurationProperties
注解來獲取list集合值,這里給大家講解下相關(guān)注解的作用
- @Component 將實(shí)體類交給Spring管理
- @ConfigurationProperties(prefix = “type.code”) 讀取yml文件中的list
- @Data 自動生成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; } }
然后在要使用的地方自動注入,我是直接在啟動類中讀取這個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());
啟動springboot我們已經(jīng)從控制臺成功讀取到y(tǒng)ml文件中l(wèi)ist集合的所有值了
第二種方式使用@value
注解獲取list集合的所有值
yml文件配置如下
student: ids: - 7 - 8 - 9
然后創(chuàng)建一個實(shí)體類
@Data public class Student { @Value("${student.ids}") private List<Integer> ids; }
再新建一個對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; }
在啟動類中注入
@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()); }
啟動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配置文件中,需要使用"-"來組成一個列表集合。
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中用于日期時間格式化的一個類,本文主要介紹了淺談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)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05SpringBoot+Vue項(xiàng)目部署實(shí)現(xiàn)傳統(tǒng)方式
我們在進(jìn)行前后端分離開發(fā)的時候,一般是將前端項(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)聽事件,這個特性非常有用。Spring內(nèi)置了一些事件和監(jiān)聽器,例如在Spring容器啟動前,Spring容器啟動后,應(yīng)用啟動失敗后等事件發(fā)生后,監(jiān)聽在這些事件上的監(jiān)聽器會做出相應(yīng)的響應(yīng)處理2021-06-06