SpringBoot熱部署與配置技巧

配置文件

SpringBoot 的熱部署

Spring為開發者提供了一個名為spring-boot-devtools的模塊來使SpringBoot應用支持熱部署,提高開發者的開發效率,無需手動重啟SpringBoot應用

相關依賴:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> 
</dependency>

修改Java代碼或者配置文件模塊后可以通過ctrl+F9來實施熱部署

配置文件

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

  • application.properties
  • application.yml

配置文件的作用:修改SpringBoot自動配置的默認值。

YML:配置例子

server:port: 8080

XML:配置例子

<server><port>8080</port>
</server>

YML語法

基本語法

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

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

server:port: 8080path: /hello

其中的屬性和值也是大小寫敏感

值的寫法

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

“”:雙引號:會轉義字符串里面的特殊字符,特殊字符會作為本身想表示的意思,比如換行符(\n),如圖:

我在雙引號中間寫了一個換行符,那么控制臺輸出這一行 person 信息的時候就會在 Jonathan 后面換行,如:

‘’:單引號:不會轉義特殊字符,特殊字符只是一個普通的字符串數據,如圖:

這次我把雙引號換成了單引號,控制臺輸出的時候就不會換行了,只會把換行符當成普通字符處理,如:

對象,Map

對象

還是 k: v 的方式

friends:name: zhangsan age: 20

行內寫法:

friends: {name: zhangsan,age: 18}

數組

用 - 值表示數組中的一個元素

pets:- cat- dog- pig

行內寫法:

pets: {cat,dog,pig}

配置文件注入

配置文件:

person:name: 'Jonathan \n xxx'age: 27sex: "true"birthday: "1993/05/01"lists: [1,2,3]maps: {k1: 1,k2: 2,k3: 3}

javaBean:

/*** @ConfigurationProperties(prefix = "person")告訴SpringBoot將本類中的所有屬性  * 和配置文件中相關的配置進行綁定*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {private String name;private int age;private boolean sex;private Date birthday;private List<Object> lists;private Map<String, Object> maps;
}

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

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐configuration‐processor</artifactId><optional>true</optional>
</dependency>

我們可以通過另一種方式獲取值

@Value和@ConfigurationProperties的區別

@Value@ConfigurationProperties
功能一個個指定批量注入配置文件中的屬性
松散綁定(松散語法)不支持支持
SpEL支持不支持
JSR303數據校驗不支持支持
復雜類型封裝不支持支持

@Value是一一綁定的

@ConfigurationProperties支持松散綁定

數據校驗:

只有前綴支持

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {@Emailprivate String email;
}

對于復雜封裝類型 @Value 不適合,比如:

private List<Object> lists;private Map<String, Object> maps;

@PropertySource

/*** 將配置文件中配置的每一個屬性的值,映射到這個組件中* @ConfigurationProperties:告訴SpringBoot將本類中的所有屬性和配置文件中相關的配置進行綁定;* prefix = "person":配置文件中哪個下面的所有屬性進行一一映射* *只有這個組件是容器中的組件,才能容器提供的@ConfigurationProperties功能;* @ConfigurationProperties(prefix = "person")默認從全局配置文件中獲取值;* */@PropertySource(value = {"classpath:person.properties"})@Component@ConfigurationProperties(prefix = "person")//@Validatedpublic class Person {/*** <bean class="Person">* <property name="lastName" value="字面量/${key}從環境變量、配置文件中獲取值/#{SpEL}"></property>* <bean/>*///lastName必須是郵箱格式// @Email//@Value("${person.last‐name}")private String lastName;//@Value("#{11*2}")private Integer age;//@Value("true")private Boolean boss;

@ImportResource:

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

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

想讓Spring的配置文件生效,加載進來,就把@ImportResource放在SpringBoot啟動類上

package com.qcby.springbootdemo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;@ImportResource({"classpath:bean.xml"})
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

Profile

多Profile文件

我們在主配置文件編寫的時候,文件名可以是 application-dev.properties

默認使用 application-dev.properties 的配置

yml支持多文檔塊方式

server:port: 8081
person:name: 'Jonathan \n xxx'age: 27sex: "true"birthday: "1993/05/01"lists: [1,2,3]maps: {k1: 1,k2: 2,k3: 3}
---
server:port: 8082
spring:config:activate:profiles: dev
---
server:port: 8083
spring:config:activate:profiles: prod

激活指定profile

在配置文件中指定 spring.profiles.active=dev

命令行:

java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;

配置文件加載位置

springboot 啟動會掃描以下位置的application.properties或者application.yml文件作為Spring boot的默認配置文件

–file:./config/

–file:./

–classpath:/config/

–classpath:/

優先級由高到底,高優先級的配置會覆蓋低優先級的配置;

SpringBoot會從這四個位置全部加載主配置文件;互補配置;

優先級如圖:

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

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

相關文章

Python與C#的三元運算符的寫法區別

一、語法結構對比??PyTorch示例??dev torch.device("cuda:0" if torch.cuda.is_available() else "cpu")??邏輯??&#xff1a;若torch.cuda.is_available()為真&#xff0c;則返回"cuda:0"&#xff0c;否則返回"cpu"。??作…

java 學習篇一

java知識點 一、windows不區分大小寫&#xff0c;linux區分大小寫 二、寫java需要JDK&#xff0c;一般運行環境需要JRE 三、JDK安裝一般是傻瓜是安裝 四、java主要工具javac、java&#xff1b;其中javac用于編譯.java -> .class&#xff1b;java用于執行.class文件執行時候不…

仙盟數據庫應用-外貿標簽打印系統 前端數據庫-V8--畢業論文-—-—仙盟創夢IDE

基于 Excel 標簽打印軟件的外貿打印流程優化與實踐摘要&#xff1a;在全球化外貿業務中&#xff0c;標簽打印是貨物流通、信息標識的關鍵環節。本文聚焦 “未來之窗云上打印技術” 的 Excel 標簽打印軟件&#xff0c;結合外貿平臺實際場景&#xff0c;分析其在打印流程中的應用…

【Linux】權限詳解 權限本質、權限屬性、su、sudo提權、chmod\chown\chgrp、文件類別

文章目錄一、權限的認識二、linux的權限本質三、linux的用戶su指令sudo提權四、linux角色五、文件權限屬性六、修改權限的指令操作chmod指令(權限只會驗證一次)chown/chgrp指令修改文件權限的八進制方案七、文件類別詳解一、權限的認識 什么是權限&#xff1f; 生活中處處都有權…

rman清理歸檔

1進入rman rman target / 2&#xff1a;列出所有歸檔日志的路徑 LIST ARCHIVELOG ALL; 3.然后在執行 crosscheck archivelog all;&#xff08;檢查 RMAN 存儲庫中記錄的歸檔日志是否在磁盤或備份存儲中實際存在。 4.然后在執行 delete noprompt expired archivelog all;&…

Selenium 處理動態網頁與等待機制詳解

在使用 Selenium 進行網頁自動化操作時&#xff0c;動態網頁往往是開發者遇到的第一個 “攔路虎”。想象一下&#xff1a;你明明在代碼中寫好了元素定位邏輯&#xff0c;運行時卻頻繁報錯 “元素不存在”&#xff0c;但手動打開網頁時元素明明就在眼前 —— 這很可能是因為網頁…

Salesforce 與外部系統實時集成:基于事件驅動的異步集成架構

在 Salesforce 與外部系統&#xff08;如 ERP、財務系統、物流系統等&#xff09;的實時集成中&#xff0c;“穩定性” 是核心挑戰 —— 既要保證數據同步的及時性&#xff0c;又要應對網絡波動、系統故障、并發沖突等不可控因素。以下從問題本質、技術瓶頸、解決方案細節三個維…

React 的 `cache()` 函數

文章目錄前言一、核心作用二、工作原理三、使用場景1. 避免重復數據請求2. 優化昂貴計算四、緩存規則詳解五、與其它緩存方式對比六、服務端特殊行為七、最佳實踐八、緩存失效策略九、使用限制十、與數據獲取庫集成總結&#xff1a;何時使用 cache()前言 React 的 cache() 函數…

大白編譯——autotools與cmake

注意: 本文內容于 2025-07-20 01:58:56 創建,可能不會在此平臺上進行更新。如果您希望查看最新版本或更多相關內容,請訪問原文地址:大白編譯——autotools與cmake。感謝您的關注與支持! 之前記錄了通過autotools編譯rpm包與deb包的步驟。參考小白編譯——rpm包與deb包 - …

react19+nextjs+antd切換主題顏色

在 React 19 Next.js Ant Design 項目中實現主題切換功能&#xff0c;可以通過以下步驟完成。這里將提供完整方案&#xff0c;包含靜態主題切換和動態實時切換兩種方式。一、基礎配置&#xff08;Ant Design 主題支持&#xff09; 1. 安裝必要依賴 npm install antd ant-desi…

Modbus Slave 使用教程:快速搭建模擬從站進行測試與開發

文章目錄Modbus Slave 使用教程&#xff1a;快速搭建模擬從站進行測試與開發步驟詳解&#xff1a;搭建 Modbus Slave1. 安裝與啟動2. 配置從站連接 (Connection Setup)連接3. 定義從站數據 (設置寄存器/線圈映射)4. 設置初始值與變化模式 (可選但重要)5. 連接 Master 進行測試高…

通俗易懂神經網絡:從基礎到實現

引言 神經網絡是人工智能和深度學習的核心&#xff0c;它模仿人腦的工作方式&#xff0c;通過數據學習復雜的模式。本文將以通俗易懂的方式講解神經網絡的基礎知識&#xff0c;包括單層神經網絡、多層神經網絡&#xff0c;最后用Python代碼實現一個簡單的神經網絡模型。1. 神經…

【Linux】基本指令詳解(三) 指令本質、三個查找指令、打包壓縮、重要熱鍵、linux體系結構、命令行解釋器

文章目錄date指令cal指令find指令(指令本質也是文件)which指令file指令whereis指令alias指令grep指令top指令打包和壓縮指令zip/unzip指令關于rzsz(linux與windows互傳 )tar指令linux機器之間互傳bc指令uname指令(查看linux機器體系結構)幾個重要的熱鍵[Tab]按鍵[Ctrl]c按鍵[Ct…

MSTP 多生成樹協議

MSTP 多生成樹協議 STP/RSTP 的局限性 所有 vlan 共享一顆生成樹無法實現不同 vlan 在多條 Trunk 鏈路上的分擔 二層鏈路負載均衡STP/RSTP 的局限——次優二層路徑**次優二層路徑&#xff08;Suboptimal Layer 2 Path&#xff09; 是指&#xff1a; ** 數據幀在交換網絡中傳輸時…

Shell腳本-tee工具

一、前言在 Linux/Unix 系統中&#xff0c;tee 是一個非常實用的命令行工具&#xff0c;它可以幫助我們 同時將命令的輸出打印到終端&#xff0c;并寫入文件。這種“雙路輸出”機制在腳本調試、日志記錄、自動化任務中非常有用。無論是做日志分析、腳本調試&#xff0c;還是編寫…

走進Linux的世界:Linux基本指令(三)

嘿&#xff0c;各位技術潮人&#xff01;好久不見甚是想念。生活就像一場奇妙冒險&#xff0c;而編程就是那把超酷的萬能鑰匙。此刻&#xff0c;陽光灑在鍵盤上&#xff0c;靈感在指尖跳躍&#xff0c;讓我們拋開一切束縛&#xff0c;給平淡日子加點料&#xff0c;注入滿滿的pa…

跨域詳解與解決方案:從理論到實踐的全面指南

目錄 1. 跨域是什么?為什么它讓人頭禿? 為什么跨域問題讓人抓狂? 跨域的本質 2. 跨域的罪魁禍首:同源策略與CORS 同源策略的來龍去脈 CORS:跨域的“通行證” 3. JSONP:古老但依然有用的跨域“黑科技” JSONP的原理 JSONP的優缺點 4. 代理服務器:跨域的“中間人…

深入詳解:決策樹在輔助診斷系統與臨床決策支持中的應用及實現細節

?? 博主簡介:CSDN博客專家、CSDN平臺優質創作者,高級開發工程師,數學專業,10年以上C/C++, C#,Java等多種編程語言開發經驗,擁有高級工程師證書;擅長C/C++、C#等開發語言,熟悉Java常用開發技術,能熟練應用常用數據庫SQL server,Oracle,mysql,postgresql等進行開發應用…

【詳細筆記】兩類曲線積分轉換

文章目錄參考教程一兩類曲線積分的聯系參數方程曲線的切線方向余弦參考教程2兩類曲線積分之間的關系物理意義解釋證明思路參考教程一 3分鐘幫你搞定兩類曲線積分之間的聯系&#xff08;弧長和坐標&#xff09; 兩類曲線積分的聯系 設平面曲線LLL上的第二類曲線積分∫LPdxQdy…

【成品設計】基于STM32F429的云端電子相冊

V1《基于STM32F429的云端電子相冊》 V1硬件框圖&#xff1a;V1功能說明&#xff1a; 支持 softAP 配網。支持 HTTPS 客戶端的 GET\POST 請求支持文件系統用于圖片的存儲。支持 LVGL 自定義 GUI。日歷功能。STM32F429文件系統LVGLRGB LCD屏幕。屏幕尺寸480*480. 首次開機交互&am…