精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

API接口參數驗證的必備神器,讓你的代碼更高效!

開發 前端
類上必須有@Validated注解;因為上面的BeanPostProcessor中定義的Advisor(DefaultPointcutAdvisor)使用的切入的Pointcut在類級別上過濾條件是必須有@Validated注解,而方法則是攔截所有的方法。

環境:Springboot2.6.12

1. 簡介

Spring Validation是一種輕量級的數據驗證框架,主要用于對Java對象進行校驗。它為數據驗證提供了統一的接口和基本的校驗功能,解決了數據校驗這一常見問題,讓開發人員能夠方便地對數據進行驗證,從而保證數據的有效性和安全性。

Spring Validation提供了一套注解,用于對Java對象進行校驗,支持嵌套校驗和分組校驗,支持國際化和自定義注解和校驗器,可以滿足各種復雜的校驗需求。它的主要特點包括:

  1. 輕量級:Spring Validation只做驗證相關的事情,不包含復雜的業務邏輯。
  2. 簡單易用:基于注解,簡潔明了,易于維護。
  3. 校驗規則靈活:支持自定義校驗規則,可擴展性強。
  4. 支持國際化:根據不同的語言環境,使用不同的校驗提示消息。
  5. 集成Hibernate Validator:Spring Validation默認使用Hibernate Validator作為其具體的實現,可以輕松地與其他數據驗證框架一起工作。

Bean Validation 為Java應用程序提供了一種通過約束聲明和元數據進行驗證的通用方法。要使用它,只需要對POJO屬性進行注釋,然后由運行時強制執行這些約束。有內置的約束,你也可以定義自己的自定義約束。如下所示:

public class Person {


  @NotNull
  @Size(max=64)
  private String name;
  @Min(0)
  private int age;


}

Bean驗證驗證器然后根據聲明的約束驗證此類的實例。有關API的一般信息,請參見Bean驗證。有關特定約束,請參閱Hibernate驗證程序文檔。

配置Bean驗證提供程序

Spring提供了對Bean驗證API的全面支持,包括將Bean驗證提供者作為Spring Bean。這使你可以在應用程序中需要驗證的任何位置注入javax.validation.ValidatorFactory或javax.validation.Validator。

你可以使用LocalValidatorFactoryBean將默認驗證器配置為Spring Bean,如下例所示:

import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;


@Configuration
public class AppConfig {


  @Bean
  public LocalValidatorFactoryBean validator() {
    return new LocalValidatorFactoryBean();
  }


}

上面的示例中的基本配置使用默認引導機制觸發bean驗證進行初始化。Bean驗證提供程序(如Hibernate驗證程序)應該出現在類路徑中,并被自動檢測到。

2. 注入 Validator

@Service
public class PersonService {
  // inject javaee validator object
  @Resource
  private Validator validator ;
  // inject spring validator object
  @Resource
  private org.springframework.validation.Validator valid ;
}

簡單實例

接著上面的配置,我們只需要做驗證動作即可。

@Service
public class PersonService {


  @Resource
  private Validator validator ;
  @Resource
  private org.springframework.validation.Validator valid ;




  public void validator(Person person) {
    Set<ConstraintViolation<Person>> res = validator.validate(person) ;
    res.forEach(cv -> {
      System.out.println(cv.getMessage()) ;
    });
    System.out.println("----------------------") ;
    BindingResult errors = new MapBindingResult(new HashMap<String, Object>(), "person") ;
    valid.validate(person, errors) ;
    if (errors.hasErrors()) {
      errors.getAllErrors().forEach(oe -> {
        System.out.println(oe.getDefaultMessage()) ;
      });
    }
  }


}

測試

@SpringBootTest
class SpringBootValidationApplicationTests {


  @Resource
  private PersonService ps ;


  @Test
  public void testValidator() {
    Person person = new Person() ;
    person.setAge(-1);
    ps.validator(person) ;
  }


}
最小不能小于0
不能為null
----------------------
最小不能小于0
不能為null

3. 自定義注解驗證

每個Bean驗證約束由兩部分組成:

  • 聲明約束及其可配置屬性的@Constraint注釋。
  • 實現約束行為的javax.validation.ConstraintValidator接口的實現。

要將聲明與實現關聯,每個@Constraint注釋都會引用相應的ConstraintValidator實現類。在運行時,當域模型中遇到約束注釋時,ConstraintValidatorFactory將實例化引用的實現。下面的示例實現一個前綴匹配的驗證邏輯:

自定義注解

@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = PrefixConstraintValidator.class)
public @interface PrefixConstraint {


  String value() default "" ;
  // 這里的{validator.prefix.error}就是資源文件中定義的錯誤信息
  String message() default "{validator.prefix.error}";


  Class<?>[] groups() default { };


  Class<? extends Payload>[] payload() default { };


}

以上的注解屬性都是必須的。

注意message屬性是我們將發生錯誤后錯誤信息定義在配置文件中,而該文件的basename必須是ValidationMessages,如果你需要國際化支持,那么就這樣命名:ValidationMessages_zh_CN.properties。

自定義驗證器

public class PrefixConstraintValidator implements ConstraintValidator<PrefixConstraint, CharSequence> {


  @Resource
  private DataService ds ;


  private String prefix ;


  @Override
  public boolean isValid(CharSequence value, ConstraintValidatorContext context) {
    ds.ak() ;
    if ( value == null ) {
      return false ;
    }
    return ((String) value).startsWith(prefix) ;
  }


  @Override
  public void initialize(PrefixConstraint pc) {
    prefix = pc.value() ;
  }


}

驗證器必須實現ConstraintValidator接口,該接口是泛型接口,第一個參數是該驗證器要用于在那個注解,第二個參數是該注解應用在什么數據類型上。注意:在自定義驗證器中我們是可以隨意地注入其它Bean對象,是不是很強大?

基于方法級的驗證

你可以通過MethodValidationPostProcessor Bean定義將Bean validation 1.1(以及Hibernate Validator 4.3的自定義擴展)支持的方法驗證功能集成到Spring上下文中:

@Bean
public MethodValidationPostProcessor validationPostProcessor() {
  return new MethodValidationPostProcessor();
}
@Service
@Validated
public class PersonService {


  @NotNull(message = "返回值不能為空")
  public Person findPerson(@NotEmpty(message = "ID 不能為空") String id) {
    return null ;
  }


}

注意:類上必須有@Validated注解;因為上面的BeanPostProcessor中定義的Advisor(DefaultPointcutAdvisor)使用的切入的Pointcut在類級別上過濾條件是必須有@Validated注解,而方法則是攔截所有的方法。

測試

圖片

這里是拋出的異常javax.validation.ConstraintViolationException,所有我們需要一個全局的異常攔截器來對異常做處理。

其他配置選項

默認的LocalValidatoryFactoryBean配置對于大多數情況都足夠了。對于各種Bean驗證構造,有許多配置選項,從消息插值到遍歷解析。有關這些選項的更多信息,請參閱LocalValidatorFactoryBean Javadoc。

https://docs.spring.io/spring-framework/docs/5.3.11/javadoc-api/org/springframework/validation/beanvalidation/LocalValidatorFactoryBean.html

責任編輯:武曉燕 來源: Spring全家桶實戰案例源碼
相關推薦

2010-12-23 15:55:00

上網行為管理

2024-08-19 00:35:00

Pythondict遍歷列表推導式

2023-07-26 07:41:53

Python線程狀態

2024-02-26 16:40:58

2025-04-24 08:40:00

JavaScript代碼return語句

2023-07-28 07:31:56

FFmpeg開源

2019-04-29 08:31:25

PythonPandas數據

2011-08-29 09:33:48

2015-07-03 10:46:26

PHP程序員工作高效

2019-11-25 10:20:54

CSS代碼javascript

2018-05-08 14:58:07

戴爾

2019-01-29 05:34:47

GitHub插件代碼

2024-12-03 00:44:50

2018-09-16 22:46:18

Mock單元測試集成測試

2024-12-10 08:00:00

C++CRTP函數

2025-05-29 08:35:39

Python代碼開發

2024-08-02 17:23:12

2024-11-19 17:47:05

2023-06-27 08:41:35

DapperSQL語句

2019-09-29 16:17:25

Java代碼性能編程語言
點贊
收藏

51CTO技術棧公眾號

中文字幕在线导航| 国产精品久久久久99| 三上悠亚 电影| 欧美xxxx少妇| 久久久久国产精品麻豆ai换脸| 国产精品com| 欧洲美女女同性互添| 精品精品国产毛片在线看| 日本高清不卡aⅴ免费网站| 黄色a级在线观看| 日本福利片在线| 韩国av一区二区三区四区| 韩国三级电影久久久久久| 欧洲性xxxx| 国产精品45p| 欧美日韩色一区| 霍思燕三级露全乳照| 亚洲丝袜在线观看| 亚洲天堂岛国片| 日韩精品三级| 欧美在线观看视频在线| 欧美a级免费视频| 欧美成人免费| 成熟亚洲日本毛茸茸凸凹| 国产精品99久久99久久久二8| 99精品久久久久| 日本黄色精品| 亚洲欧美激情精品一区二区| 日本少妇xxxx软件| 日日夜夜亚洲| 91九色最新地址| 极品美女扒开粉嫩小泬| √天堂8在线网| 中文字幕五月欧美| 亚洲精品国产一区| 久热av在线| 久久先锋影音av| 激情小说网站亚洲综合网| 国产不卡av在线播放| 蜜桃视频第一区免费观看| 欧洲成人免费aa| 国产成人无码一区二区三区在线| 亚洲欧美一级二级三级| 久久久精品美女| 五月天免费网站| 精品国产午夜| 在线播放日韩专区| 日韩一区二区a片免费观看| 亚洲国产欧美日韩在线观看第一区 | 成人午夜电影免费在线观看| 国产精品嫩草影院桃色| 蜜桃精品视频在线观看| 国产精品免费在线免费| 欧美日韩a v| 可以看av的网站久久看| 日本一欧美一欧美一亚洲视频| 欧美精品在线第一页| 黄色片免费网址| 91精品一区| 宅男在线国产精品| xxx中文字幕| 国产精选久久| 日韩女优毛片在线| 中文字幕一区二区三区人妻在线视频 | 久久高清精品| 久久久极品av| 免费中文字幕视频| 最新成人av网站| 91精品国产99| 在线免费一区二区| 久久综合综合久久综合| 91影视免费在线观看| 国产日韩欧美中文字幕| 国产电影一区在线| 国产精品视频免费一区| 特黄视频在线观看| 国产调教视频一区| 中文字幕免费在线不卡| 色呦呦在线观看视频| 亚洲电影中文字幕在线观看| 国产精品宾馆在线精品酒店| 午夜精品成人av| 91精品国产综合久久久蜜臀图片| 免费看的av网站| 久久婷婷国产| 中文字幕亚洲欧美一区二区三区 | 婷婷丁香激情综合| 中文字幕无码不卡免费视频| 天堂久久一区| 亚洲国产精品久久久久秋霞不卡| 女同毛片一区二区三区| 精品日韩欧美一区| 欧美福利视频在线| 中文字幕国产在线观看| 免费在线成人网| 亚洲综合在线中文字幕| 三级做a全过程在线观看| 国产精品视频yy9299一区| 日韩大片免费观看视频播放| 亚洲免费精品视频| 色呦呦在线资源| 色综合中文综合网| 久久艹这里只有精品| 午夜精品影视国产一区在线麻豆| 正在播放欧美视频| 清纯粉嫩极品夜夜嗨av| 久久精品盗摄| 444亚洲人体| yourporn在线观看中文站| 亚洲综合区在线| 冲田杏梨av在线| 视频在线亚洲| 一道本无吗dⅴd在线播放一区| 国产激情无码一区二区三区| 一区二区动漫| aa日韩免费精品视频一| 国产黄色片在线播放| 亚洲动漫第一页| 一级黄色片国产| 红桃视频在线观看一区二区| 欧美激情二区三区| 中文字幕免费高清在线观看| 91美女视频网站| 韩国无码av片在线观看网站| 成人18视频在线观看| 日韩精品在线视频美女| 黄色录像免费观看| 免费中文字幕日韩欧美| 国产区一区二区三区| 国产在线更新| 欧美日韩一区二区在线视频| 中文字幕人妻一区二区| 国产视频一区欧美| 国产不卡一区二区在线观看 | 亚洲经典视频| 中文字幕一精品亚洲无线一区 | 99热99re6国产在线播放| 欧美疯狂做受xxxx富婆| 亚洲一区 欧美| 五月婷婷婷婷婷| 亚洲人成网www| 久久久久久久一区二区| 99久久精品日本一区二区免费 | 日韩精品一区二区三区四区| 永久免费看片直接| 精品无人码麻豆乱码1区2区| 日韩视频在线观看国产| 成人精品三级| 中文字幕国内精品| 亚洲综合一区中| 国产精品久久久久久久久免费樱桃| 黄色片久久久久| 丝袜av一区| 琪琪第一精品导航| 久草在线青青草| 色欲综合视频天天天| 国产激情在线免费观看| 久久一综合视频| 日韩av在线电影观看| 色天使综合视频| 自拍偷拍亚洲在线| 国产精品久久久久久69| 综合欧美亚洲日本| 天堂av2020| 欧美精品二区| 国产视频一区二区三区四区| 麻豆mv在线看| 亚洲视频一区二区三区| 在线观看亚洲国产| ㊣最新国产の精品bt伙计久久| 国内自拍第二页| 欧美三级在线| 蜜桃传媒一区二区| 日本一区免费网站| 久久天天躁夜夜躁狠狠躁2022| www.xxx国产| 午夜精品久久久久久久| 亚洲欧美va天堂人熟伦| 极品少妇一区二区| 久久99中文字幕| 精品99久久| 亚洲在线免费视频| 久久男人天堂| 中文字幕在线观看亚洲| 亚洲第九十九页| 欧美色视频日本高清在线观看| 亚洲不卡的av| 国产传媒日韩欧美成人| 国产欧美高清在线| 一区二区中文字| 色爱区综合激月婷婷| 国产精品二区在线观看| 鲁鲁在线中文| 久久精品久久久久久国产 免费| www.四虎在线观看| 国产精品一区高清| 91精品国产综合久久国产大片| 久草免费在线观看视频| 久久毛片高清国产| www.日本久久| 久久一二三区| 久草免费福利在线| 成人在线免费观看91| 欧美视频三区在线播放| 成人在线小视频| 午夜成年人在线免费视频| 日韩av在线免费看| 国产精品视频a| 亚洲国产另类精品专区| 自拍偷拍你懂的| 94色蜜桃网一区二区三区| 一区二区三区网址| 99av国产精品欲麻豆| 在线观看成人免费| 国产欧美一区二区三区精品观看| 亚洲自拍小视频免费观看| 日韩在线观看不卡| 久久国产精品久久国产精品| 国产在线视频福利| 亚洲大胆人体视频| 亚洲一级片免费看| 懂色aⅴ精品一区二区三区蜜月| 天天天天天天天天操| 91麻豆.com| 国产乱淫av片| 精品一区免费av| 欧美激情 国产精品| 亚洲精品中文字幕乱码| 亚洲va久久久噜噜噜久久狠狠| 国产成人aa在线观看网站站| 91亚洲国产精品| 欧洲精品一区二区三区| 欧美一级片免费在线| 性欧美videos高清hd4k| 久久久www成人免费精品| 北条麻妃在线| 一色桃子一区二区| 欧美美乳在线| 亚洲美女www午夜| 天天操天天插天天射| 亚洲国产成人精品久久久国产成人一区 | 国产精品三级在线| 成人软件在线观看| 日韩av免费在线播放| 女海盗2成人h版中文字幕| 在线高清一区| 国产va免费精品高清在线| 精精国产xxx在线视频app| 欧美激情一级欧美精品| 欧美黄色视屏| 欧美激情视频在线| 欧美午夜大胆人体| 久久久女女女女999久久| 日本电影在线观看| 九九热99久久久国产盗摄| 日韩电影免费观看| 欧美巨猛xxxx猛交黑人97人| 欧美videossex| 久久人人看视频| 日本三级一区| 国产精品r级在线| 精品国产美女a久久9999| 国产精品网红直播| 高清av一区| 成人免费视频网址| 日韩精品中文字幕吗一区二区| 国产精品久久久久91| 日韩影片中文字幕| 日韩av大片免费看| 成人av色网站| 亚洲自拍小视频| 国产一区二区三区亚洲| 久久久久久国产精品免费免费| 尤物tv在线精品| 亚洲一区二区三区乱码| 自拍欧美日韩| 国产精品成人一区二区三区吃奶| 新版的欧美在线视频| 国产精品久久久久久久7电影| 日本一区二区三区中文字幕| 97人人干人人| 欧美挤奶吃奶水xxxxx| 日韩精品久久一区二区三区| 午夜精品视频一区二区三区在线看| 国产女教师bbwbbwbbw| 国产手机视频一区二区| 天天操天天爱天天爽| 国产精品一级在线| 91精品人妻一区二区| 中文字幕一区视频| 日韩毛片在线播放| 欧美日韩精品三区| 三级在线观看网站| 日韩有码在线电影| h片精品在线观看| 国产精品夫妻激情| 国产视频一区二| 欧美成熟毛茸茸复古| 五月婷婷亚洲| 欧美国产激情视频| 国产精品资源在线看| 国产精品20p| 午夜精品久久久久久久久| 国产又粗又猛又爽又黄的视频一| 精品国产亚洲一区二区三区在线观看| 国产视频精品久久| 欧美精品video| 日本a人精品| 欧美日韩精品不卡| 国产无遮无挡120秒| 夜夜精品浪潮av一区二区三区| 亚洲欧美一区二区三区在线观看| 67194成人在线观看| 蜜桃视频在线观看网站| 欧美福利视频在线观看| 国产香蕉久久| 欧美成熟毛茸茸复古| 欧美日韩第一区| 99国产精品久久久久久| 久久精品日产第一区二区三区高清版| 九九视频免费看| 欧美日韩一二区| 黄色在线播放| 久久久视频精品| 国产日本亚洲| 偷拍视频一区二区| 免费精品视频| 久久一区二区电影| 亚洲第一福利一区| 亚洲精品国产精| 欧美超级免费视 在线| 欧美xnxx| 日本10禁啪啪无遮挡免费一区二区| 亚洲网站啪啪| www日本在线观看| 亚洲靠逼com| 精品久久久无码中文字幕| 久久久www成人免费精品| 日韩有码欧美| 91手机视频在线| 国内成+人亚洲+欧美+综合在线| 欧洲性xxxx| 欧美日韩成人在线| av在线免费观看网站| 国产精品一香蕉国产线看观看| 精品久久精品| 一区二区三区视频网| 亚洲国产激情av| 在线观看视频二区| 精品国产一区久久久| 电影91久久久| 在线观看三级网站| 国产不卡高清在线观看视频| 欧美日韩激情在线观看| 精品日韩欧美在线| av人人综合网| 美女被啪啪一区二区| 欧美中文字幕| 色屁屁草草影院ccyy.com| 欧美日韩中文字幕一区| 国产原厂视频在线观看| 亚洲最大成人在线| 亚洲国产精品第一区二区| 亚洲男人在线天堂| 在线观看日产精品| 视频三区在线| 99c视频在线| 一区二区三区四区五区精品视频| 久久久精品人妻无码专区| 欧美伊人久久大香线蕉综合69| 在线a人片免费观看视频| 95av在线视频| 亚洲三级电影在线观看| 一本加勒比北条麻妃| 欧美视频在线一区二区三区| aa在线视频| 久久综合婷婷综合| 九九国产精品视频| 久久精品国产亚洲av香蕉 | 亚洲区小说区图片区| 337p粉嫩大胆噜噜噜噜噜91av | 91精品国产91久久久久久吃药| 国产成人精品三级高清久久91| 欧美美女一级片| 亚洲va在线va天堂| 成人欧美亚洲| 国产厕所精品在线观看| 久久国产欧美| 国产探花在线免费观看| 日韩精品视频在线免费观看| 国产福利亚洲| 久久国产精品视频在线观看| 国产视频亚洲色图| www.五月婷| 国产精品久久久久久久久粉嫩av| 你懂的国产精品永久在线| 国产成人精品无码免费看夜聊软件| 91麻豆精品久久久久蜜臀| 深夜在线视频| 蜜臀av性久久久久蜜臀av|