成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

新特性真香!Spring Boot 3.4 配置屬性驗證大升級,一文看懂

開發 前端
如果你正在構建一個現代化的企業級 Spring Boot 應用,趕緊升級到 3.4 并用上這一新特性吧,它將為你的系統穩定性帶來實打實的提升!

隨著 Spring Boot 3.4 的發布,開發者在配置屬性校驗方面迎來了更靈活、更強大的能力。相比以往版本的校驗方式,3.4 中不僅簡化了使用方式,也提升了啟動階段錯誤發現的粒度和及時性。本文將帶你全面了解 Spring Boot 3.4 中的配置屬性驗證機制,并通過實例掌握其實際應用。

什么是配置屬性驗證?

在實際開發中,我們常常會將一些可配置的參數放入application.yml或application.properties文件中,例如服務名稱、線程池大小、是否開啟某功能等。

使用@ConfigurationProperties注解可以將這些配置值自動綁定到 Java Bean 中,但若配置錯誤(如漏填、格式不符)將導致應用行為異常或運行失敗。

為此,Spring Boot 提供了配置屬性校驗機制——借助 JSR-380 Bean Validation(如 Hibernate Validator)對屬性進行約束,保障配置安全和穩定。

Spring Boot 3.4 中的增強點

Spring Boot 3.4 對配置屬性驗證做了以下增強:

  • ? 更好地與jakarta.validation集成;
  • ? 支持校驗嵌套類屬性和集合元素;
  • ? 支持 IDE 警告提示和更清晰的啟動錯誤日志;
  • ? 支持使用@Validated和@Valid結合更復雜的驗證邏輯;
  • ? 支持 YAML 中復雜結構的自動校驗。

基礎示例:配置屬性驗證實戰

Maven 引入依賴

Spring Boot 默認引入spring-boot-starter-validation,如果未引入,請添加如下依賴:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

定義配置類

package com.icoderoad.config;


import jakarta.validation.constraints.*;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.validation.annotation.Validated;


@Validated
@ConfigurationProperties(prefix = "app")
public class AppProperties {


    @NotBlank(message = "應用名稱不能為空")
    private String name;


    @Min(value = 1, message = "線程池大小最小為1")
    @Max(value = 100, message = "線程池大小最大為100")
    private int threadPoolSize;


    @Email(message = "管理員郵箱格式錯誤")
    private String adminEmail;


    // getter & setter
}

在配置類中注冊 Bean

@Configuration
public class AppConfig {
    @Bean
    public AppProperties appProperties() {
        return new AppProperties();
    }
}

配置文件application.yml

app:
name: MyCoolApp
thread-pool-size:10
admin-email: admin@example.com

啟動時驗證失敗示例

app:
name:""
thread-pool-size:200
admin-email: not-an-email

啟動時將拋出如下異常:

Binding to target failed:
  Property: app.name
  Value: ""
  Reason: 應用名稱不能為空

  Property: app.threadPoolSize
  Value: 200
  Reason: 線程池大小最大為100

  Property: app.adminEmail
  Value: not-an-email
  Reason: 管理員郵箱格式錯誤

高級功能:嵌套驗證與集合校驗

嵌套對象校驗

public class AppProperties {
    @Valid
    private DatabaseConfig database = new DatabaseConfig();


    public static class DatabaseConfig {
        @NotBlank
        private String url;


        @NotBlank
        private String username;


        @NotBlank
        private String password;
        // getter & setter
    }
}

YAML 示例:

app:
database:
url: jdbc:mysql://localhost:3306/test
username: root
password:123456

集合與列表的元素校驗

@Size(min =1)
private List<@EmailString> userEmails;

YAML 示例:

app:
user-emails:
- user1@example.com
- user2@example.com

結合 Spring Boot 自動裝配方式使用

推薦將配置類作為@Component方式注入并使用@EnableConfigurationProperties開啟:

@ConfigurationProperties(prefix ="app")
@Validated
@Component
public class AppProperties{...}

或者在配置類中統一引入:

@Configuration
@EnableConfigurationProperties(AppProperties.class)
public class Config{}

與 IDE 配合的提示增強(IntelliJ IDEA)

Spring Boot 3.4 的元信息生成能力更強,能自動生成META-INF/spring-configuration-metadata.json元數據文件,實現:

  • YAML/Properties 的補全提示;
  • 無效字段警告;
  • 自動校驗錯誤定位。

常見校驗注解一覽

注解

含義

@NotNull

不允許為 null

@NotBlank

不允許為空字符串

@Min(x)

最小值

@Max(x)

最大值

@Email

郵箱格式

@Pattern

正則表達式

@Size

集合、數組或字符串長度范圍

總結與最佳實踐

Spring Boot 3.4 中配置屬性驗證機制極大增強了開發過程中的配置健壯性與故障預防能力,有效避免“配置寫錯了,服務跑掛了”的尷尬場景。

最佳實踐建議:

  1. 所有配置類都應添加@Validated;
  2. 合理使用@ConfigurationProperties代替@Value零散注入;
  3. 對嵌套配置、集合字段也加入校驗注解;
  4. 強烈推薦使用 IDEA、Spring Tools 等支持元信息提示的 IDE 工具;
  5. 將配置信息校驗錯誤在開發階段暴露,避免線上事故。

如果你正在構建一個現代化的企業級 Spring Boot 應用,趕緊升級到 3.4 并用上這一新特性吧,它將為你的系統穩定性帶來實打實的提升!

責任編輯:武曉燕 來源: 路條編程
相關推薦

2025-04-29 07:44:26

配置校驗機制

2020-03-31 14:40:24

HashMap源碼Java

2022-05-12 13:13:52

Android TAndroid 13提拉米蘇

2016-08-18 00:21:12

網絡爬蟲抓取網絡

2024-08-12 12:30:27

2025-01-20 09:15:00

iOS 18.3蘋果iOS 18

2021-08-02 06:56:19

TypeScript編程語言編譯器

2025-04-27 01:55:44

SpringConfigData配置

2022-11-08 07:46:28

record類聲明代碼

2022-11-24 14:32:00

云原生K8S

2019-07-01 09:22:15

Linux操作系統硬件

2019-05-22 09:50:42

Python沙箱逃逸網絡攻擊

2018-05-30 15:10:24

Spring BootList類型

2025-04-08 08:01:31

2019-09-02 07:42:50

nginx服務器跨域

2025-04-27 04:00:00

錯誤頁Spring底層

2018-06-13 13:29:49

云計算公有云混合云

2018-06-12 22:07:23

云計算數據CIO

2024-09-11 09:30:58

IDEA工具編程

2025-03-25 09:06:11

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产高清久久久 | 亚洲一区视频在线 | 999观看免费高清www | 久草.com | 久久精品91久久久久久再现 | 天天操天天拍 | 欧美福利一区 | 国产成人精品一区二区三区在线 | 国产福利在线小视频 | 99精品一区二区三区 | 日韩精品一区二区三区在线 | 中文在线一区二区 | 国产精品久久久久久238 | 日韩午夜精品 | 欧美一a一片一级一片 | 亚洲欧洲中文 | 中文字幕av免费 | 欧美午夜精品 | 久久久综合色 | 综合色影院 | 激情六月天 | 精品久久久久久久久久久 | 国产免费福利在线 | 337p日韩 | 亚洲精品一区二区三区蜜桃久 | 欧美视频在线一区 | 蜜桃视频成人 | 黄色中文字幕 | 日韩精品成人网 | 99久久婷婷 | 91视频在线 | 国产精品久久久久久久久动漫 | 免费播放一级片 | 国产亚洲精品综合一区 | 中文无吗 | 国产一区999 | 欧美午夜一区 | 欧美精品成人 | 久草中文在线观看 | 人人cao| 一级毛片大全免费播放 |