Spring Boot的配置文件

配置文件的作用

整個項目中所有重要的數據都是在配置文件中配置,如數據庫的連接信息,項目的啟動端口,用于發現和定位問題的普通日志和異常日志等等。配置文件可以分為兩類

  1. 系統使用的配置文件(系統配置文件),如端口號的設置,連接數據庫的配置
  2. 用戶自定義的配置文件

配置文件的格式

Spring Boot的配置文件可以分為 .properties和 .yml兩種格式。.properties屬于早期時代的格式,也是Spring Boot項目的默認配置文件。當一個項目中存在兩種格式的配置文件,并且兩個配置文件都設置了相同的配置項,但值不同,那么properties的優先級更高。通常在一個項目中只會存在一種格式的配置文件。

properties的用法

  1. properties是以鍵值的形式配置的,key和value之間用“=”連接,中間沒有空格。
# 系統配置端口號
server.port=8888
# 自定義配置
name=zhangsan
  1. 使用@Value注解使用${}的格式讀取配置文件
@RestControllerpublic class Controller {@Value("${name}")//要和配置文件中的key值相同private String name;@PostConstructpublic void sayHi() {System.out.println("hi: " + name);}}

image.png
:::info

  1. propertices的缺點
    :::
    image.png
    我們發現properties有很多冗余信息,而使用yml就可以很好的解決

yml配置文件

yml的優點

  1. yml寫法簡單,可讀性高
  2. yml支持更多數據類型,如數組,對象
  3. yml支持多語言

稍微規模大點的公司都開始使用微服務,像字節內部有java,go,python,php語言,只關心業務是否能夠實現,使用什么語言并不關心。如果使用properties配置文件就要寫多份,而yml就很好的解決了這個問題。

key: value

注意:key和value之間使用冒號和空格組成
yml版本的連接數據庫
image.png

yml進階

配置不同數據類型
#字符串
string.value: hello
#布爾值
boolean.value: true
boolean.value2: false
#整數
int.value: 10
#浮點數
float.value: 3.14
#空值,~表示Null
null.value: ~

讀取配置文件中的基礎類型使用@Value(“${}”)注解

@RestControllerpublic class Controller {//要和key值對應@Value("${string.value}")private String hello;@PostConstructpublic void postConstruct() {System.out.println(hello);}@Value("${boolean.value}")private boolean bool;@PostConstructpublic void postConstruct2() {System.out.println(bool);}@Value("${null.value}")private Integer integer;@PostConstructpublic void postConstruct3() {System.out.println(integer);}}

image.png
:::success
注意:value值加單/雙引號
:::

string:str1: hello \n Spring Bootstr2: 'hello \n Spring Boot'str3: "hello \n Spring Boot"
@RestController
public class Controller {@Value("${string.str1}")private String str1;@PostConstructpublic void construct1() {System.out.println("str1: " + str1);}@Value("${string.str2}")private String str2;@PostConstructpublic void construct2() {System.out.println("str2: " + str2);}@Value("${string.str3}")private String str3;@PostConstructpublic void construct3() {System.out.println("str3: " + str3);}
}

image.png
由上可知

  1. 字符串默認不用加上單引號或者雙引號
  2. 單引號會轉義特殊字符,特殊字符最終只是一個普通的字符串數據
  3. 雙引號不會轉義字符串里面的特殊字符,特殊字符會作為本身想表示的意思
配置對象
#自定義一個對象,兩種寫法
#student:
#  id: 1
#  name: zhangsan
#  age: 18
student: {id: 1, name: zhangsan, age: 18}

讀取配置文件中的對象使用@ConfigurationProperties注解

@Component
//三種寫法
//@ConfigurationProperties(value = "student")
//@ConfigurationProperties(prefix = "student")
@ConfigurationProperties("student")
@Data //需要提供get,set方法才能夠把配置文件的信息讀取出來
public class Student {//類型和名字要一一對應private int id;private String name;private int age;
}

配置集合
#自定義集合
#list:
#  array:
#    - 1
#    - 2
#    - 3
list: {array: [1,2,3]}

讀取配置文件中的集合使用@ConfigurationProperties

@Component@ConfigurationProperties("list")@Datapublic class MyList {private List<Integer> array;}

properties和yml的區別

  1. properties是以key=value的形式進行配置,而yml是使用類json格式。
  2. properties為早期且默認的配置文件格式,其配置存在一定的冗余數據,使用yml可以很好的解決數據冗余的問題
  3. yml通用性更好,支持多種語言,例如開發一個云服務器,可以使用同一份配置文件作為java和go的共同配置文件
  4. yml支持更多的數據類型

設置不同環境的配置文件

在一個項目中有多種環境,如開發環境,測試環境,生產環境。每個環境的配置項都有所不同,如何讓一個配置文件適應不同的環境呢?
image.png
把配置文件設為生產環境

spring:profiles:active: prod
server:port: 9999
server:port: 7777

image.png
此時使用的就是生產環境配置的端口號

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

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

相關文章

【Kotlin】

Lambda 就是一小段可以作為參數傳遞的代碼。 因為正常情況下&#xff0c;我們向某個函數傳參時只能傳入變量&#xff0c;而借助Lambda 卻允許傳入一小段代碼。 Lambda 表達式的語法結構&#xff1a; {參數名1: 參數類型, 參數名2: 參數類型 -> 函數體}首先&#xff0c;最外…

JS基礎源碼之手寫模擬new

JS基礎源碼之手寫模擬new 手寫模擬new初步實現最終實現 手寫模擬new new 運算符創建一個用戶定義的對象類型的實例或具有構造函數的內置對象類型之一。 我們先看看new實現了哪些功能&#xff1a; function Person (name,age){this.name name;this.age age;this.habit Games;…

開發猿的平平淡淡周末---2023/12/9

上周回顧 完成了遺留的開發任務&#xff0c;基本全部完成進一步了解了系統當時設計的原理熟悉了代碼的重構 2023.12.9 天氣晴 溫度適宜 前言 小伙伴們大家好&#xff0c;時間很快&#xff0c;又來到了周末&#xff0c;也是一個平平淡淡的周末。上周只更了一篇博客...原…

滲透測試 | 滲透測試之信息收集

滲透測試&#xff08;penetration test&#xff0c;pentest&#xff09;是實施安全評估&#xff08;即審計&#xff09;的具體手段。 滲透測試可能是單獨進行的一項工作&#xff0c;也可能是常規研發生命周期&#xff08;例如&#xff0c;Microsoft SDLC&#xff09;里 IT 安全…

Unicode編碼解碼

一、Unicode概述 Unicode是一種字符編碼標準&#xff0c;旨在解決不同字符集之間的兼容性問題。它為全球所有語言提供了一種統一的編碼方式&#xff0c;使得各種字符能夠在計算機系統中正確顯示和處理。Unicode字符集包含了世界上幾乎所有的字符&#xff0c;包括中文字符、英文…

算法Day23 簡單吃飯(0-1背包)

簡單吃飯&#xff08;0-1背包&#xff09; Description Input Output Sample 代碼 import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();int total scanner.nextInt(…

WebDriver核心方法和屬性:掌握自動化測試的利器

在自動化測試中&#xff0c;Selenium WebDriver是一個非常重要的工具。它提供了一種方式來模擬用戶與瀏覽器的交互&#xff0c;從而進行各種操作&#xff0c;如點擊按鈕、輸入文本等。本文將介紹WebDriver的核心方法和屬性&#xff0c;以及如何使用它們。 1. 啟動和關閉瀏覽器…

使用es256算法生成jwt

1、使用hutool來做 1、先去jwt解密/加密 - bejson在線工具弄個公私鑰 2、導入hutool maven <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.22</version></dependency><depe…

高項備考葵花寶典-項目進度管理輸入、輸出、工具和技術(中,很詳細考試必過)

項目進度管理的目標是使項目按時完成。有效的進度管理是項目管理成功的關鍵之一&#xff0c;進度問題在項目生命周期內引起的沖突最多。 小型項目中&#xff0c;定義活動、排列活動順序、估算活動持續時間及制定進度模型形成進度計劃等過程的聯系非常密切&#xff0c;可以視為一…

Pytorch中的resize和reshape

torch.reshape() 官方文檔的大致意思是&#xff1a; 返回與輸入具有相同數據和元素數量的張量&#xff0c;但是具有指定形狀。如果可能&#xff0c;返回的張量將是輸入的視圖&#xff0c;也就是說原本的tensor并沒有被改變&#xff0c;如果想要改變那么就將改變的tensor賦值給…

情深不必糾纏

那一年&#xff0c;男孩女孩在萬千人中相遇了。多年后女人的一封郵件&#xff0c;讓男人與女人的靈魂相遇了。他們無緣夫妻&#xff0c;卻發現彼此是靈魂的陪伴。不能攜手相守&#xff0c;卻懂得彼此的心靈。 有一天&#xff0c;女人告訴男人要回家了&#xff0c;問男人心里會不…

ejs —— 三目運算符的用法

EJS&#xff08;Embedded JavaScript&#xff09;是一種簡單的模板語言&#xff0c;它允許將JavaScript代碼嵌入到HTML中。在EJS中&#xff0c;<%、<%和<%-是用于將JavaScript代碼嵌入到模板中的語法。 <%&#xff1a;這是EJS的輸出表達式&#xff0c;用于將變量的…

阿里云安裝docker

文章目錄 一、 yum 進行安裝&#xff08;os版本 CentOS 7&#xff09; 推薦二、 apt-get 進行安裝(os版本 Ubuntu 14.04/16.04&#xff09;三、測試四、阿里云docker加速 一、 yum 進行安裝&#xff08;os版本 CentOS 7&#xff09; 推薦 # step 1: 安裝必要的一些系統工具 su…

<HarmonyOS第一課>應用服務上架【課后考核】

【習題】HarmonyOS應用/元服務上架 判斷題 元服務發布的國家與地區僅限于“中國大陸” 正確(True) 編譯打包的軟件包存放在項目目錄build > outputs > default下 正確(True) 單選題 創建應用時&#xff0c;應用包名需要和app.json5或者config.json文件中哪個字段保持…

VMware安裝Ubuntu20.04并使用Xshell連接虛擬機

文章目錄 虛擬機環境準備重置虛擬網絡適配器屬性&#xff08;可選&#xff09;配置NAT模式的靜態IP創建虛擬機虛擬機安裝配置 Xshell連接虛擬機 虛擬機環境準備 VMware WorkStation Pro 17.5&#xff1a;https://customerconnect.vmware.com/cn/downloads/details?downloadGr…

基于Java旅游信息管理系統

基于Java旅游信息管理系統 功能需求 1、旅游目的地管理&#xff1a;系統需要能夠記錄和管理各個旅游目的地的詳細信息&#xff0c;包括景點介紹、交通方式、住宿推薦等。管理員可以添加、編輯和刪除目的地信息。 2、旅游線路規劃&#xff1a;系統需要提供旅游線路規劃功能&a…

C++類名后面跟大括號和跟小括號的區別

在 C 中&#xff0c;類名后面跟著大括號 {} 和小括號 () 有不同的含義和作用。 大括號 {}&#xff1a; 初始化對象&#xff1a;當在聲明類對象時使用大括號 {} 時&#xff0c;這表示對對象進行初始化。這種方式也稱為列表初始化或者統一初始化。示例&#xff1a;MyClass obj{};…

網上下載的pdf文件,為什么不能復制文字?

不知道大家有沒有到過這種情況&#xff1f;在網上下載的PDF文件打開之后&#xff0c;發現選中文字之后無法復制。甚至其他功能也都無法使用&#xff0c;這是怎么回事&#xff1f;該怎么辦&#xff1f; 當我們發現文件打開之后&#xff0c;編輯功能無法使用&#xff0c;很可能是…

AlexNet

概念 過擬合:根本原因是特征維度過多&#xff0c;模型假設過于復雜&#xff0c;參數過多&#xff0c;訓練數據過少&#xff0c;噪聲過多&#xff0c;導致擬合的函數完美的預測訓練集&#xff0c;但對新數據的測試集預測結果差。 過度的擬合了訓練數據&#xff0c;而沒有考慮到…

29、卷積 - 參數 padding 的作用

在卷積過程中,Padding(填充)是一個關鍵的概念,它對于保留輸入信息和有效地處理邊緣信息至關重要。 1、Padding是什么? Padding 指的是在輸入圖像的周圍添加額外的像素值,用來以擴大輸入圖像的尺寸,這些額外填充的像素值通常設置為零,卷積操作在這個填充后的輸入圖像上…