【Spring】_SpringBoot配置文件

目錄

1.Spring Boot配置文件

1.1 Spring Boot 的配置文件類型及命名

1.2 properties和yml的優先級

2. properties配置文件

1.1 properties語法格式

1.2 自定義配置及配置文件的讀取

1.3 properties的缺點

3. yml配置文件

3.1 yml語法格式

3.2 自定義配置及配置文件的讀取

3.4 yml配置文件

4. 更多配置示例:banner


配置文件最重要的目的是解決硬編碼問題;

1.Spring Boot配置文件

1.1 Spring Boot 的配置文件類型及命名

1、Spring Boot配置文件有以下三種:

(1)application.properties

(2)application.yaml;

(3)application.yml;(yml是yaml的縮寫)

2、配置文件的命名必須如上所示,不能隨便更改application,否則會無法識別:

(1)正確命名:

(2)錯誤命名:以properties文件為例,將application修改為applications:

1.2 properties和yml的優先級

現在application.properties中設置項目端口為9090:

在application.yml中設置端口為9091:

啟動程序,查看啟動日志:

現注釋掉properties文件的端口設置語句,重新啟動項目,啟動日志如下:

關于配置文件的優先級總結如下:
1、當.properties和.yml共存在一個項目中時,二者都會被加載。但當二者配置有沖突時,.properties的優先級更高

2、通常在一個項目中僅保留兩個配置文件之一即可;

2. properties配置文件

properties文件是Spring Boot項目創建的默認配置文件。

1.1 properties語法格式

properties配置文件以key-value形式組織,key與value用=連接

建議key使用小寫,單詞與單詞之間使用.進行分割;

以配置項目端口號和配置數據庫連接為例:

# 配置項目端口號
server.port=9090
# 配置數據庫連接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

注意使用的是spring的@value,不是lombok的@value:

1.2 自定義配置及配置文件的讀取

若需在項目中主動讀取配置文件,可以使用@Value注解實現,使以"${ }"格式讀取,示例如下:

現在application.properties中新增配置項,令其key為demo.key:

# ?o???¨?????? WEB è??é????ˉ??£
server.port=8080# 自定義配置
demo.key=hello,properties

在Controller包下創建一個propertiesController類:

package com.example.iocdemo1.Controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class PropertiesController {@Value("${demo.key}")private String key1;@RequestMapping("/readKey")public  String readKey(){return "Configuration item has read: key1 = "+key1;}
}

啟動程序,通過Chrome進行訪問:

可見配置文件成功讀取;

1.3 properties的缺點

以連接數據庫為例:

# 配置數據庫連接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&
spring.datasource.username=root
spring.datasource.password=root

可見properties中存在一定冗余,如spring.datasource重復寫;?

3. yml配置文件

3.1 yml語法格式

yml是樹形配置文件,其基礎語法格式為“key: value”,冒號后有一個空格不可省略,以配置項目端口號和配置數據庫連接為例:

# 配置項目端口號
server:port: 9091
#  配置數據庫連接
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=falseusername: rootpassword: root

注:1、逐層換行表示一種層次,idea會幫助換行,對于server、spring等必須頂格,否則會報錯;

2、key與value之間的冒號后必須有一個空格,否則會報錯;

yml文件中的顏色變化也可幫助檢查:

3.2 自定義配置及配置文件的讀取

若需在項目中主動讀取配置文件,可以使用@Value注解實現,使以"${ }"格式讀取,示例如下:

現在application.yml中新增配置項,令其key為demo.key1:

demo:key1: hello,yml

?在Controller包下創建一個ymlController類:

package com.example.iocdemo1.Controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ymlController {@Value("${demo.key1}")private String key1;@RequestMapping("/readYml")public String redKey1(){return "Configuration item has read: key1 = "+key1;}
}

啟動程序,使用Chrome進行訪問:?

可見配置文件成功讀取;

注:在yml配置的文件使用${ }進行讀取時,需將配置文件中的冒號與空格更換為.

3.4 yml配置文件

優點:

1、可讀性高,寫法簡單,易于理解;

2、支持更多數據類型,可簡單表達對象,數組,List,Map等數據形態;

(本部分將在下一篇文章進行介紹)

3、支持更多編程語言,不僅在java中,在golang、python等中都可以使用;

缺點:

1、不適合寫復雜的配置文件,當配置文件非常復雜時會造成可讀性較差;

2、對格式有較強要求,尤其是空格很容易造成難以查找和糾正的錯誤;

4. 更多配置示例:banner

Spring官網提供的更多配置見鏈接:Common Application Properties :: Spring Boot

Spring默認啟動日志設計的banner圖形為spring:

現使用yml配置文件,以修改spring默認啟動輸出的banner圖形為例,將其修改為Hello World。

第一步:查找官網banner的配置:

第二步:創建banner.txt文件:

可使用一些在線小工具生成Hello World圖案,復制到banner.txt中:

第三步:在yml中新增banner.txt配置如下:

# 配置項目端口號
server:port: 9091
#  配置數據庫連接
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=falseusername: rootpassword: rootbanner:location: banner.txt

第四步:重啟程序,查看日志:

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

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

相關文章

實操給觸摸一體機接入大模型語音交互

本文以CSK6 大模型開發板串口觸摸屏為例,實操講解觸摸一體機怎樣快速增加大模型語音交互功能,使用戶能夠通過語音在一體機上查詢信息、獲取智能回答及實現更多互動功能等。 在本文方案中通過CSK6大模型語音開發板采集用戶語音,將語音數據傳輸…

深入解析 FFmpeg 的 AAC 編解碼過程

深入解析 FFmpeg 的 AAC 編解碼過程 —— 技術詳解與代碼實現 AAC(Advanced Audio Coding) 是一種高效的有損音頻壓縮格式,因其高壓縮效率和良好的音質而被廣泛應用于流媒體、廣播和音頻存儲等領域。FFmpeg 是一個強大的多媒體處理工具,支持 AAC 的編碼和解碼。本文將詳細…

RabbitMQ 從入門到精通:從工作模式到集群部署實戰(一)

#作者:閆乾苓 文章目錄 RabbitMQ簡介RabbitMQ與VMware的關系架構工作流程RabbitMQ 隊列工作模式及適用場景簡單隊列模式(Simple Queue)工作隊列模式(Work Queue)發布/訂閱模式(Publish/Subscribe&#xff…

探索 Spring Cloud Alibaba:開啟微服務架構新時代

一、引言 在當今數字化浪潮中,軟件系統的規模和復雜度不斷攀升,傳統的單體架構逐漸難以滿足快速迭代、高并發處理以及靈活擴展的需求。微服務架構應運而生,它將一個大型的應用拆分成多個小型、自治的服務,每個服務專注于特定的業務…

Linux基礎命令之Nginx中的rewrite功能(重新)

一、什么是Rewrite Rewrite也稱URL Rewrite,即URL重寫,就是把傳入Web的請求重定向到其他URL的過程。 1. URL Rewrite最常見的應用是URL偽靜態化,是將動態頁面顯示為靜態頁面方式的一種技術。比如http://www.123.com/news/index.php?id123 使…

anaconda使用

anaconda配置鏡像源: 引用:https://zhuanlan.zhihu.com/p/17776864328 # 顯示所有的鏡像源 conda config --show channels # 設置鏡像源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add c…

DeepSeek 闡述 2025年前端發展趨勢

預測2025年前端的發展趨勢。首先,我需要考慮當前的前端 技術發展情況,以及近幾年的變化趨勢。比如,框架方面,React、Vue、Angular這些主流框架的更新方向和社區活躍度。可能用戶想知道未來哪些技術會更流行,或者需要學…

RK3568平臺開發系列講解(ConfigFS篇)ConfigFS核心數據結構

??返回專欄總目錄 文章目錄 一、數據結構二、結構體關系三、案例3.1、configfs_subsystem 實例3.2、config_group 實例化四、屬性和方法五、config_item實例化沉淀、分享、成長,讓自己和他人都能有所收獲!?? 理解 ConfigFS 的核心數據結構對于深入使用和定制 ConfigFS 非…

【實戰篇】巧用 DeepSeek,讓 Excel 數據處理更高效

一、為何選擇用 DeepSeek 處理 Excel 在日常工作與生活里,Excel 是我們頻繁使用的工具。不管是統計公司銷售數據、分析學生成績,還是梳理個人財務狀況,Excel 憑借其強大的功能,如數據排序、篩選和簡單公式計算,為我們提供了諸多便利。但當面對復雜的數據處理任務,比如從…

微信小程序案例1——制作貓眼電影底部標簽導航欄

文章目錄 一、項目步驟1 新建一個無AppID的movie項目2將準備好的底部標簽導航圖標拷貝到movie項目下面(將圖標文件夾image放到項目文件夾里)3 打開App.json配置文件,在pages數組里添加4個頁面路徑:電影“pages/movie/movie”、影院“pages/cinema/cinema…

CSS 偽類(Pseudo-classes)的詳細介紹

CSS 偽類詳解與示例 在日常的前端開發中,CSS 偽類可以幫助我們非常精準地選擇元素或其特定狀態,從而達到豐富頁面表現的目的。本文將詳細介紹以下偽類的使用: 表單相關偽類 :checked、:disabled、:enabled、:in-range、:invalid、:optional、…

docker多個容器的相互通信

在同一臺宿主機上運行多個 Docker 容器時,容器之間可以通過以下幾種方式實現通信: 1. 使用 Docker 默認網絡(Bridge 網絡) Docker 默認會為每個容器分配一個 bridge 網絡,容器可以通過 IP 地址或容器名稱互相通信。 …

Elasticsearch 開放推理 API 增加了 Azure AI Studio 支持

作者:來自 Elastic Mark Hoy Elasticsearch 開放推理 API 現已支持 Azure AI Studio。在此博客中了解如何將 Azure AI Studio 功能與 Elasticsearch 結合使用。 作為我們持續致力于為 Microsoft Azure 開發人員提供他們選擇的工具的一部分,我們很高興地宣…

基于Bootstrap + Java + Oracle實現的電商平臺

以下是基于Bootstrap Java Oracle實現的電商平臺開發方案(簡化版): 一、系統架構設計 前端:Bootstrap 5 jQuery 后端:Java Spring Boot 數據庫:Oracle 19c 自動化:Spring Scheduler Oracle…

JUC學習筆記02

文章目錄 JUC筆記2練習題:手寫線程池代碼解釋:AdvancedThreadPool 類:WorkerThread 內部類:AdvancedThreadPoolExample 類: 線程池的思考CPU密集型IO密集型 練習題:手寫自動重試機練習題:手寫定…

【Unity】從父對象中獲取子對象組件的方式

1.GetComponentInChildren 用于獲取對與指定組件或游戲對象的任何子級相同的游戲對象上的組件類型的引用。 該方法在Unity腳本API的聲明格式為: public T GetComponentInChildren(bool includeInactive false) includeInactive參數(可選&#xff09…

Redis性能優化

1.是否使用復雜度過高的命令 首先,第一步,你需要去查看一下 Redis 的慢日志(slowlog)。 Redis 提供了慢日志命令的統計功能,它記錄了有哪些命令在執行時耗時比較久。 查看 Redis 慢日志之前,你需要設置慢…

baigeiRSA

baigeiRSA 打開附件有兩個: 1.import libnumfrom Crypto.Util import numberfrom secret import flag?size 128e 65537p number.getPrime(size)q number.getPrime(size)n p*q?m libnum.s2n(flag)c pow(m, e, n)?print(n %d % n)print(c %d % c)??2.n…

【csp-j學習完C++語法后,如何進階學習C++算法和數據結構?】

在掌握了 CSP - J 的 C 語法基礎后,接下來的進階學習需要系統地掌握各類算法和數據結構知識,并通過大量練習來鞏固和提高應用能力。以下是一份詳細的進階學習規劃: 第一階段:基礎算法學習(1 - 2 個月) 排…

QT中解決使用QCustomplot繪制高速大量數據時頻譜圖卡頓問題

[!!!核心方法!!!] 使用帶參數的replot()函數繪制m_pCustomPlot>replot(QCustomPlot::rpQueuedReplot) 1. replot() 方法 void QCustomPlot::replot(QCustomPlot::RefreshPriority refreshPriority rp…