自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

開發(fā) 前端
如果你正在構(gòu)建一個(gè)現(xiàn)代化的企業(yè)級 Spring Boot 應(yīng)用,趕緊升級到 3.4 并用上這一新特性吧,它將為你的系統(tǒng)穩(wěn)定性帶來實(shí)打?qū)嵉奶嵘?/div>

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

什么是配置屬性驗(yàn)證?

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

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

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

Spring Boot 3.4 中的增強(qiáng)點(diǎn)

Spring Boot 3.4 對配置屬性驗(yàn)證做了以下增強(qiáng):

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

基礎(chǔ)示例:配置屬性驗(yàn)證實(shí)戰(zhàn)

Maven 引入依賴

Spring Boot 默認(rèn)引入spring-boot-starter-validation,如果未引入,請?zhí)砑尤缦乱蕾嚕?/p>

<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 = "應(yīng)用名稱不能為空")
    private String name;


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


    @Email(message = "管理員郵箱格式錯(cuò)誤")
    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

啟動時(shí)驗(yàn)證失敗示例

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

啟動時(shí)將拋出如下異常:

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

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

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

高級功能:嵌套驗(yàn)證與集合校驗(yàn)

嵌套對象校驗(yàn)

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

集合與列表的元素校驗(yàn)

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

YAML 示例:

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

結(jié)合 Spring Boot 自動裝配方式使用

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

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

或者在配置類中統(tǒng)一引入:

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

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

Spring Boot 3.4 的元信息生成能力更強(qiáng),能自動生成META-INF/spring-configuration-metadata.json元數(shù)據(jù)文件,實(shí)現(xiàn):

  • YAML/Properties 的補(bǔ)全提示;
  • 無效字段警告;
  • 自動校驗(yàn)錯(cuò)誤定位。

常見校驗(yàn)注解一覽

注解

含義

@NotNull

不允許為 null

@NotBlank

不允許為空字符串

@Min(x)

最小值

@Max(x)

最大值

@Email

郵箱格式

@Pattern

正則表達(dá)式

@Size

集合、數(shù)組或字符串長度范圍

總結(jié)與最佳實(shí)踐

Spring Boot 3.4 中配置屬性驗(yàn)證機(jī)制極大增強(qiáng)了開發(fā)過程中的配置健壯性與故障預(yù)防能力,有效避免“配置寫錯(cuò)了,服務(wù)跑掛了”的尷尬場景。

最佳實(shí)踐建議:

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

如果你正在構(gòu)建一個(gè)現(xiàn)代化的企業(yè)級 Spring Boot 應(yīng)用,趕緊升級到 3.4 并用上這一新特性吧,它將為你的系統(tǒng)穩(wěn)定性帶來實(shí)打?qū)嵉奶嵘?/p>

責(zé)任編輯:武曉燕 來源: 路條編程
相關(guān)推薦

2020-03-31 14:40:24

HashMap源碼Java

2022-05-12 13:13:52

Android TAndroid 13提拉米蘇

2025-04-27 01:55:44

SpringConfigData配置

2016-08-18 00:21:12

網(wǎng)絡(luò)爬蟲抓取網(wǎng)絡(luò)

2022-11-08 07:46:28

record類聲明代碼

2018-05-30 15:10:24

Spring BootList類型

2025-04-27 04:00:00

錯(cuò)誤頁Spring底層

2025-04-08 08:01:31

2024-08-12 12:30:27

2019-07-01 09:22:15

Linux操作系統(tǒng)硬件

2019-05-22 09:50:42

Python沙箱逃逸網(wǎng)絡(luò)攻擊

2025-01-20 09:15:00

iOS 18.3蘋果iOS 18

2021-08-02 06:56:19

TypeScript編程語言編譯器

2022-11-24 14:32:00

云原生K8S

2024-09-11 09:30:58

IDEA工具編程

2019-09-02 07:42:50

nginx服務(wù)器跨域

2018-06-12 22:07:23

云計(jì)算數(shù)據(jù)CIO

2018-06-13 13:29:49

云計(jì)算公有云混合云

2022-03-29 08:02:01

數(shù)字孿生能源程序

2023-07-14 08:00:00

ORMRust ORMSQL
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號