Spring Boot 自定義配置類(包含字符串、數字、布爾、小數、集合、映射、嵌套對象)實現步驟及示例

Spring Boot 自定義配置類實現步驟及示例


步驟說明
  1. 創建配置類:定義一個 POJO 類,使用 @ConfigurationProperties 注解指定配置前綴。
  2. 啟用配置綁定:在啟動類或配置類上添加 @EnableConfigurationProperties 注解。
  3. 配置文件寫法:在 application.propertiesapplication.yml 中按前綴配置參數。
  4. 注入配置類:通過 @Autowired 在需要的組件中使用配置參數。

完整代碼示例
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;import java.util.List;
import java.util.Map;@Component
@ConfigurationProperties(prefix = "app.config") // 指定配置前綴
@Data // Lombok 自動生成 getter/setter
public class AppConfig {// 基本類型private String name;          // 字符串類型private int port;             // 整型private boolean enabled;      // 布爾型private double version;       // 雙精度浮點型// 集合類型private List<String> roles;   // 列表private Map<String, String> metadata; // 鍵值對// 嵌套對象private NestedConfig nested;// 嵌套類(需在父類中定義或單獨定義)@Datapublic static class NestedConfig {private String field1;private Integer field2;}
}

啟用配置綁定

在 Spring Boot 啟動類或配置類上添加 @EnableConfigurationProperties

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;@SpringBootApplication
@EnableConfigurationProperties(AppConfig.class) // 啟用配置類
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

配置文件示例
application.properties
app.config.name=MyApp
app.config.port=8080
app.config.enabled=true
app.config.version=1.0.0
app.config.roles=ROLE_USER,ROLE_ADMIN
app.config.metadata.key1=value1
app.config.metadata.key2=value2
app.config.nested.field1=nestValue
app.config.nested.field2=42
application.yml
app:config:name: MyAppport: 8080enabled: trueversion: 1.0.0roles:- ROLE_USER- ROLE_ADMINmetadata:key1: value1key2: value2nested:field1: nestValuefield2: 42

字段類型總結表格
字段類型字段名配置示例說明
Stringnameapp.config.name=MyApp基礎字符串配置
intportapp.config.port=8080整數類型配置
booleanenabledapp.config.enabled=true布爾值開關配置
doubleversionapp.config.version=1.0.0浮點數配置
Listrolesapp.config.roles=ROLE_USER,ROLE_ADMIN列表集合配置(逗號分隔)
Mapmetadataapp.config.metadata.key1=value1鍵值對配置(YAML 需層級結構)
嵌套對象nestedapp.config.nested.field1=nestValue嵌套對象需通過子屬性層級配置

關鍵注釋說明
  1. @ConfigurationProperties:必須指定 prefix 屬性,對應配置文件的前綴。
  2. 嵌套對象:通過字段名繼續擴展配置層級(如 nested.field1)。
  3. 集合類型List 用逗號分隔值,Map 需通過鍵名直接賦值。
  4. 啟用配置:通過 @EnableConfigurationProperties 或在配置類上添加 @Component 自動注冊 Bean。

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

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

相關文章

Linux: 線程控制

目錄 一 前言 二 線程控制 1. POSIX線程庫(原生線程庫) 2. 創建線程 2.1 pthread_create 2.2pthread_self()獲取線程id 3.線程終止 3.1.return 方式 3.2 pthread_exit 4 線程等待 三 理解線程tid 一 前言 在上一篇文章中我們已經學習了線程的概念&#xff0c;線程的創…

避開養生誤區,擁抱健康生活

在追求健康的道路上&#xff0c;我們常常會陷入一些養生誤區&#xff0c;不僅無法達到預期效果&#xff0c;還可能損害身體健康。只有撥云見日&#xff0c;認清這些誤區&#xff0c;采取正確的養生方式&#xff0c;才能真正擁抱健康生活。? 很多人認為&#xff0c;保健品吃得…

<數據集>蘋果識別數據集<目標檢測>

數據集下載鏈接https://download.csdn.net/download/qq_53332949/90585216數據集格式&#xff1a;VOCYOLO格式 圖片數量&#xff1a;535張 標注數量(xml文件個數)&#xff1a;535 標注數量(txt文件個數)&#xff1a;535 標注類別數&#xff1a;2 標注類別名稱&#xff1a;…

【補題】P10424 [藍橋杯 2024 省 B] 好數(數位dp)

題意&#xff1a; 一個整數如果按從低位到高位的順序&#xff0c;奇數位&#xff08;個位、百位、萬位……&#xff09;上的數字是奇數&#xff0c;偶數位&#xff08;十位、千位、十萬位……&#xff09;上的數字是偶數&#xff0c;我們就稱之為“好數”。 給定一個正整數 N…

分布式存儲怎樣提高服務器數據的安全性?

分布式存儲是一種計算機數據存儲架構&#xff0c;主要是將數據信息分布存儲在多臺計算機或者是服務器上&#xff0c;以此來實現高可靠性、可擴展性和高性能&#xff0c;讓每個計算機或服務器可以通過網絡連接相互通信和協作。 分布式存儲系統會定期對重要的數據信息進行完整性檢…

數字IC后端培訓教程系列之PR Innovus工具寫出Calibre LVS用的Netlist詳細步驟

在數字IC后端設計實現chipfinish階段需要寫出很多數據&#xff0c;比如netlist&#xff0c;def&#xff0c;gds&#xff0c;lib和lef等文件。 今天給大家分享PR工具Innovus寫出Calibre物理驗證LVS要用的netlist的詳細步驟。 手把手教你debug解決物理驗證Calibre LVS錯誤 1&a…

TrueNAS scale(23.10) Restful API接口調用

背景 本文主要講解開源的NAS系統--TrueNAS的二次開發。 TrueNAS scale安裝 網上能找到很多類似的文章&#xff0c;本文就不介紹了&#xff0c;這里給一個視頻博主的傳送門&#xff1a; 司波圖 TrueNAS scale Resful API 接口 官網的 Resful API地址&#xff1a;TrueNAS REST…

卡爾曼濾波器淺聊

0 前言: 卡爾曼濾波屬于算法領域的,所以一些基本的數學概念是必須了解的 涉及到的數學基本概念 概念數學符號含義數學期望(Expected Value)E描述隨機變量平均取值的最核心概念概率(Probability)P(X= x i x_i xi?)隨機變量 X 取特定值 x i x_i xi?的概率方差(Varian…

1ll C++

在C++中,1ll 表示 long long 類型的整數常量1。這里的 ll 是 long long 的縮寫。這種寫法主要用于以下幾個方面: 1. 為什么需要 1ll? 在您的代碼中,1ll 主要用于 防止整數溢出 和 確保正確的類型轉換: cpp 復制 p = 1ll * p * i % MOD; f[i + 1] = 1ll * i * (i + 1) …

oracle 12c密碼長度,復雜度查看與設置

一 密碼長度和復雜度 Oracle 數據庫通過 PASSWORD_VERIFY_FUNCTION 來控制密碼復雜度。 1.1 查看當前的密碼復雜度設置 SELECT * FROM dba_profiles WHERE resource_name PASSWORD_VERIFY_FUNCTION; LIMIT表示分配給該 PROFILE 的密碼驗證函數名稱。如果為 NULL&#xff0c;…

指定運行級別

linux系統下有7種運行級別,我們需要來了解一下常用的運行級別,方便我們熟悉以后的部署環境,話不多說,來看. 開機流程&#xff1a; 指定數級別 基本介紹 運行級別說明: 0:關機 相當于shutdown -h now ??默認參數不能設置為0,否則系統無法正常啟動 1:單用戶(用于找回丟…

Appium工作原理及環境的搭建(1)

1、Appium的介紹&#xff1a; 一、什么是Appium Desktop&#xff1f; Appium Desktop是Appium項目的桌面版GUI工具&#xff0c;提供了一個友好的界面&#xff0c;用于啟動Appium服務器、查看設備日志、與設備交互、調試自動化腳本等。相比于命令行工具&#xff0c;Appium Des…

esp32cam遠程圖傳:AI Thinker ESP32-CAM -》 服務器公網 | 服務器 -》 電腦顯示

用AI Thinker ESP32-CAM板子訪問公網ip的5112端口并上傳你的攝像頭拍攝的圖像視頻數據&#xff0c;并寫一段python程序打開彈窗接受圖像實現超遠程圖像傳輸教程免費 1. 首先你要有一個公網ip也就是去買一臺擁有公網的服務器電腦&#xff0c;我買的是騰訊云1年38元的服務器還可…

【Pandas】pandas DataFrame copy

Pandas2.2 DataFrame Conversion 方法描述DataFrame.astype(dtype[, copy, errors])用于將 DataFrame 中的數據轉換為指定的數據類型DataFrame.convert_dtypes([infer_objects, …])用于將 DataFrame 中的數據類型轉換為更合適的類型DataFrame.infer_objects([copy])用于嘗試…

緩存相關問題

Redis 持久化機制 緩存雪崩、緩存穿透、緩存預熱、緩存更新、緩存降級等問題 熱點數據和冷數據是什么 Memcache與Redis的區別都有哪些? 單線程的redis為什么這么快 redis的數據類型,以及每種數據類型的使用場景,Redis 內部結構 redis的過期策略以及內存淘汰機制 Redis 為什么…

2025年AI開發學習路線

目錄 一、基礎階段&#xff08;2-3個月&#xff09; 1. 數學與編程基礎 2. 機器學習入門 二、核心技能&#xff08;3-4個月&#xff09; 1. 深度學習與框架 2. 大模型開發&#xff08;重點&#xff09; 三、進階方向&#xff08;3-6個月&#xff09; 1. 多模態與智能體…

SvelteKit 最新中文文檔教程(19)—— 最佳實踐之身份認證

前言 Svelte&#xff0c;一個語法簡潔、入門容易&#xff0c;面向未來的前端框架。 從 Svelte 誕生之初&#xff0c;就備受開發者的喜愛&#xff0c;根據統計&#xff0c;從 2019 年到 2024 年&#xff0c;連續 6 年一直是開發者最感興趣的前端框架 No.1&#xff1a; Svelte …

【Kafka基礎】消費者命令行完全指南:從基礎到高級消費

Kafka消費者是消息系統的關鍵組成部分&#xff0c;掌握/export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-console-consumer.sh工具的使用對于調試、測試和監控都至關重要。本文將全面介紹該工具的各種用法&#xff0c;幫助您高效地從Kafka消費消息。 1 基礎消費模式 1.1 從最…

CausalML 基于機器學習算法的因果推理方法

CausalML 是一個 Python 包&#xff0c;它使用基于最新研究的機器學習算法提供一套提升建模和因果推理方法。它提供了一個標準界面&#xff0c;允許用戶從實驗或觀察數據中估計條件平均處理效應 &#xff08;CATE&#xff09;&#xff0c;也稱為個體治療效應 &#xff08;ITE&a…

解鎖深度學習激活函數

在深度學習的廣袤天地里&#xff0c;激活函數宛如隱匿于神經網絡架構中的神奇密碼&#xff0c;掌控著模型學習與表達的關鍵力量。今天&#xff0c;就讓我們一同深入探究這些激活函數的奇妙世界&#xff0c;揭開它們神秘的面紗。 一、激活函數為何不可或缺&#xff1f; 想象一…