Spring Boot 配置文件解析

一、前言

SpringBoot 使用一個全局的配置文件,配置文件名固定的;

·application.properties

·application.yml

配置文件的作用:修改SpringBoot自動配置的默認值;SpringBoot在底層都給我們自動配置好;

YAMLYAML Ain't Markup Language

YAML A Markup Language:是一個標記語言

YAML isn't Markup Language:不是一個標記語言;

標記語言:

以前的配置文件;大多都使用的是 xxxx.xml文件;

YAML:以數據為中心,比jsonxml等更適合做配置文件;

二、YAML語法

?

?2.1基本語法

k:(空格)v: 表示一對鍵值對(空格必須有);

以空格的縮進來控制層級關系;只要是左對齊的一列數據,都是同一層級的

屬性和值也是大小寫敏感?

2.2 值的寫法

字面量: 普通的值(數字,字符串,布爾)

k: v: 字面直接來寫

字符串默認不用加上單引號或者雙引號

"":雙引號,會轉義字符串里面的特殊字符;特殊字符會作為本身想表示的意思

name: "zhangsan \n lisi": 輸出; zhangsan 換行 lisi

'':單引號;不會轉義特殊字符,特殊字符最終只是一個普通的字符串數據

name:' zhangsan \n lisi': 輸出; zhangsan \n lisi?

2.3 對象、數組、Map(屬性和值)(鍵值對)

?

在下一行來寫對象的屬性和值的關系;注意縮進

對象:(還是k: v的方式)


行內寫法 (注意空格)

數組:

?

?

Map :

三、配置文件值注入?

3.1 使用@ConfigurationProperties將值注入到屬性中

application.yml配置文件的內容:

server:port: 8082Person:last_name: "xiaobai \n xxx"age: 21birth: 2025/09/22boss: falsemaps: {k1: shuai,k2: ku}lists:-lisi-zhaoliudog: {name: Snax,age: 12}

?

javaBean:

我們可以導入配置文件處理器,以后編寫配置就有提示了

<!‐‐導入配置文件處理器,配置文件進行綁定就會有提示‐‐>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐configuration‐processor</artifactId><optional>true</optional>
</dependency>

我們編寫一個測試類,?

    @Autowiredprivate Person person;@Testpublic void TestPerson(){System.out.println(person);}

?發現yml里面配置的內容給到了Person類的屬性了

3.2 @Value獲取值和@ConfigurationProperties獲取值比較

3.2.1松散綁定:

?

通過@ConfigurationProperties方法注入值

Person類里的LastName屬性 和yml文件中的名字不一樣,照樣能夠注入成功

但是@Value注解必須要精準匹配yml里的鍵值,才能注入值

?

3.2.2? SpEL表達式

@Value支持計算表達式

?

但是@ConfigurationProperties不支持?

3.2.3 數據校驗

我們可以新加一個email屬性,并對email屬性進行依次數據校驗

給email 賦值

分別用這兩種注入方式查看結果:

?

@ConfigurationProperties報錯了,說明支持數據校驗

@Value 直接打印了結果,說明它根本沒有數據校驗這回事

?

3.2.4 復雜類型封裝

復雜類型指的是 Map、對象等類型

我們是直接在yml文件里賦值的,@Vaue無法干這件事

?

3.2.3 ?@PropertySource @ImportResource @Bean

@PropertySource: 加載指定的配置文件

?

person.properties文件中的內容:

person.lastName=張三${random.uuid}
person.age=${random.int}
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=${person.hello:hello}_dog
person.dog.age=15

運行一下:

說明person.properties文件里的相應值注入了Person里的屬性中?

@ImportResource

導入Spring的配置文件,讓配置文件里面的內容生效;

Spring Boot里面沒有Spring的配置文件,我們自己編寫的配置文件,也不能自動識別;

想讓Spring的配置文件生效,加載進來;@ImportResource標注在一個配置類上

?在主程序中引入注解,使Bean.xml生效

配置一下Bean.xml吧

我們引入了alibaba中的Druid連接池?

此時我們去測試類里測試,連接池是否引入成功?

?

發現引入成功

還有一種方法,我們在Spring框架中想引入一個配置文件是這樣引入的

    @org.junit.Testpublic void test() {ApplicationContext context = new AnnotationConfigApplicationContext(UserProxy.class);UserService userService = (UserService) context.getBean("userserviceimpl");userService.save();}

?

在這里我們用同樣的思路驗證是否引入了druid連接池

驗證:?

引入成功!?

ok,今天小編就分享到這里,希望對你的學習有所幫助哦

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/90080.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/90080.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/90080.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【JS】事件類型(可addEventListener監聽)

文章目錄1. 窗口/視圖相關事件2. 鼠標事件3. 鍵盤事件4. 焦點事件5. 表單事件6. 觸摸事件&#xff08;移動端&#xff09;7. 其他重要事件使用示例 // 監聽滾動事件 useEffect(() > {const handleScroll () > {console.log("當前滾動位置:", window.scrollY);…

【3GPP】5G專用詞匯1

〇、在5G通信領域&#xff0c;類似RRU&#xff08;遠端射頻單元&#xff09;、UE&#xff08;用戶終端&#xff09;、BS&#xff08;基站&#xff09;的專業術語非常豐富&#xff0c;涵蓋設備、功能、架構、技術等多個層面。以下是分類整理的常見5G名詞及其說明&#xff1a; 一…

基于 FFT + VMD 預處理的 1DCNN?Informer 雙支路并行、多頭注意力融合分類模型

1? 引言 現代工業設備的運行狀態高度復雜、故障類型日趨多樣,單一特征處理或單一路徑模型常難以兼顧高精度與實時性。本期推出的模型**“FFT+VMD→1DCNN?Informer→多頭注意力”**流水線,將頻域分解與時序建模結合,通過雙支路并行特征提取和注意力融合,在旋轉機械、電力…

ndarray的創建(小白五分鐘從入門到精通)

ndarray的創建用途方法語法示例核心作用輸出示例基礎構造? 從 Python 數據結構創建np.array()np.array([[1, 2], [3, 4]])將列表/元組轉換為 ndarrayarray([[1, 2], [3, 4]])? 復制數組np.copy()np.copy(arr)創建獨立副本&#xff08;深拷貝&#xff09;與原數組相同但不共享…

考研數據結構Part1——單鏈表知識點總結

一、前言單鏈表是線性表的鏈式存儲結構&#xff0c;作為數據結構中最基礎也是最重要的線性結構之一&#xff0c;在考研數據結構科目中占有重要地位。本文將總結帶頭結點單鏈表的各項基本操作&#xff0c;包括初始化、插入、刪除、查找等&#xff0c;并附上完整C語言實現代碼&am…

筆試——Day15

文章目錄第一題題目思路代碼第二題題目&#xff1a;思路代碼第三題題目&#xff1a;思路代碼第一題 題目 平方數 思路 判斷?個數開根號之后左右兩個數的平?&#xff0c;哪個最近即可 代碼 第二題 題目&#xff1a; 分組 思路 枚舉所有的結果&#xff0c;找到第一個復合要…

物聯網全流程開發記錄

問題 有數據采集設備&#xff0c;服務器&#xff0c;上位機用戶顯示三部分&#xff0c;采集設備將采集的數據發送至服務器。服務器將數據保存&#xff0c;上位機讀取服務器保存的數據庫顯示。當出現多設備&#xff0c;多用戶時&#xff0c;如何通過多設備對應多用戶&#xff0c…

【LeetCode 熱題 100】46. 全排列——回溯

Problem: 46. 全排列 文章目錄整體思路完整代碼時空復雜度時間復雜度&#xff1a;O(N * N!)空間復雜度&#xff1a;O(N)整體思路 這段代碼旨在解決一個經典的組合數學問題&#xff1a;全排列 (Permutations)。給定一個不含重復數字的數組 nums&#xff0c;它需要找出其所有可能…

AXI接口學習

amba總線的發展axi協議是兩個接口之間的點對點的協議&#xff0c;主要是有5個通道。主機在寫地址&#xff08;AW&#xff09;通道上發送地址&#xff0c;并在寫數據&#xff08;W&#xff09;通道上將數據傳輸到從機。從機將接收到的數據寫入指定地址空間。從機完成寫操作&…

Validation - Spring Boot項目中參數檢驗的利器

Validation - Spring Boot項目中參數檢驗的利器 什么是Validation Sping Boot官方原文&#xff1a;When it comes to validating user input, Spring Boot provides strong support for this common, yet critical, task straight out of the box.Although Spring Boot support…

云服務器VS虛擬主機:如何抉擇?

開篇引入在當今數字化浪潮中&#xff0c;無論是個人站長想要搭建獨具風格的博客&#xff0c;展示自己的生活感悟與專業見解&#xff1b;還是中小企業期望構建官方網站&#xff0c;拓展線上業務版圖&#xff0c;提升品牌知名度&#xff1b;亦或是大型互聯網企業籌備高并發的電商…

不同相機CMOS噪點對熒光計算的影響

摘要&#xff1a;熒光成像是生物醫學、材料科學等領域的重要研究手段&#xff0c;其成像質量高度依賴傳感器噪聲特性。本文系統分析CMOS傳感器噪聲類型及其對熒光信號計算的影響機制&#xff0c;結合實驗數據探討不同CMOS架構的噪聲表現差異&#xff0c;提出針對性優化策略。研…

docker 常見命令使用記錄

1. swarm 集群 1. 集群創建 # 創建集群管理節點&#xff0c; --advertise-addr 指定節點管理通信地址&#xff0c;--data-path-addr 指定容器通信地址 docker swarm init --advertise-addr 1.14.138.35 --data-path-addr 1.14.138.35# --advertise-addr 指明當前work節點的…

KRaft 角色狀態設計模式:從狀態理解 Raft

這些狀態類是 Raft 協議行為的核心載體。它們包含轉移邏輯 和 節點在特定狀態下的所有行為和數據。QuorumState它是 KRaft 客戶端實現中狀態管理的核心&#xff0c;扮演著“狀態機上下文&#xff08;Context&#xff09;”和“狀態轉換協調者”的關鍵角色。QuorumState 是整個 …

Linux的磁盤存儲管理實操——(上)

一、Linux的設備文件分類 Linux的設備文件分類1、在Linux系統中設備文件是用來與外接交互的接口&#xff0c;它將內核中的硬件設備與文件系統關聯起來&#xff0c;讓用戶可以像操作普通文件一樣來操作硬件設備&#xff0c;同時也為開發者提供了方便而強大的應用程序接口。 2、L…

內核bpf的實現原理

bpftrace能幫我們干什么&#xff1f;1、統計 tcp連接的生命時長、2、統計mysql執行一條sql語句的時間3、統計redis執行命令的時間、 4、對文件進行一次讀或者寫的時間。 常用命令&#xff1a; bpftrace -e Begin { printf("hello\n"); } bpftrace -l *enter_accep…

前端npm配置Nexus為基礎倉庫

步驟&#xff1a; 一、Nexus倉庫配置 新增npm倉庫,具體詳解見 Nexus私有倉庫配置&#xff0c;解釋 注&#xff1a;Nexus的版本需要至少3.38以上&#xff0c;不然會出現npm install 時npm的審計功能報錯&#xff0c;導致install失敗。雖然在3.38以后不會報400錯誤&#xff0c…

數據結構 之 【排序】(直接插入排序、希爾排序)

目錄 1.直接插入排序 1.1直接插入排序的思想 1.2直接插入排序的代碼邏輯&#xff1a; 1.3 直接插入排序圖解 1.4單趟排序代碼(單個元素的排序邏輯) 1.5完整排序代碼 1.6直接插入排序的時間復雜度與空間復雜度 1.7直接插入排序的優勢 2.希爾排序(縮小增量排序) 2.1…

Laravel 后臺登錄 403 Forbidden 錯誤深度解決方案-優雅草卓伊凡|泡泡龍

Laravel 后臺登錄 403 Forbidden 錯誤深度解決方案-優雅草卓伊凡|泡泡龍一頓操作猛如虎&#xff0c;一看結果250&#xff0c;必須記錄&#xff0c;必須記錄&#xff0c;&#xff01;今天弄了很久關于我們2023年的產品系統蜻蜓T會議系統專業版&#xff0c;然后終于搞好了密碼也重…

Newline全場景方案閃耀2025中國智慧生活大會

7月15日 — 16日&#xff0c;由中國電子視像行業協會等權威機構指導的2025 CIC中國智慧生活大會在京召開。Newline作為視像協會PID分會副會長單位攜全場景智慧辦公解決方案亮相&#xff0c;首席營銷官李宇鵬受邀出席領袖圓桌環節&#xff0c;與騰訊云、京東方、創維、TCL、小猿…