精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

精品久久国产字幕高潮| 乱人伦中文视频在线| 成年网站在线视频网站| 奇米色一区二区| 亚洲一区二区视频在线| 国产精品视频午夜| 黄色在线观看av| 亚洲av无码乱码在线观看性色| 国产成人影院| 狠狠躁夜夜躁人人爽超碰91| www 成人av com| 黄色录像免费观看| 日韩精品第一| 久久精品视频网| 2018中文字幕一区二区三区| 美女流白浆视频| 国产在线高潮| 韩国精品久久久| 精品国产区一区二区三区在线观看| 日本三级免费观看| 午夜福利视频一区二区| 亚洲国产激情| 精品噜噜噜噜久久久久久久久试看| 日韩欧美亚洲天堂| 日韩精品视频在线观看一区二区三区| 亚洲国产精品一区制服丝袜| 在线观看国产欧美| 色婷婷狠狠18| 香蕉视频免费在线播放| 美女网站视频久久| 久久精品国产电影| 伦伦影院午夜理论片| av观看在线| 国产suv一区二区三区88区| 色综合久久88| 污片免费在线观看| 超碰超碰人人人人精品| 久久久久国产精品麻豆ai换脸| 91超碰rencao97精品| 欧美黄色免费在线观看| 欧美亚洲大陆| 欧美在线|欧美| 欧美 另类 交| 搡老岳熟女国产熟妇| 国产精品综合| 伊人伊成久久人综合网小说| 免费看黄色aaaaaa 片| 蜜桃精品在线| 亚洲欧美激情一区二区| 国产另类第一区| 中文字幕在线天堂| 欧美在线二区| 亚洲国产成人精品女人久久久 | 一区二区不卡免费视频| 99re热精品视频| 亚洲成人资源网| 日韩hmxxxx| 国产精品自偷自拍| 亚洲精品1区| 久久久亚洲影院| 天堂在线中文视频| 欧美视频二区欧美影视| 欧美日韩日本国产| 成年人视频网站免费观看| 午夜裸体女人视频网站在线观看| 欧美国产日产图区| 成人片在线免费看| 久久这里只有精品9| 亚洲欧美伊人| 欧美激情免费在线| 俄罗斯毛片基地| 日韩系列欧美系列| 亚洲国产高清福利视频| 亚洲成a人无码| 精品亚洲a∨| 狠狠躁夜夜躁人人躁婷婷91| 97国产精东麻豆人妻电影| 麻豆网站在线看| 国产精品美女久久久久久久| 国产欧美欧洲| 99riav国产| 热久久国产精品| 成人黄色免费网站在线观看| 国产亚洲欧美在线精品| 国产精品二区影院| 精品激情国产视频| 精品深夜av无码一区二区老年| 欧美中文一区二区| 亚洲精品久久久久| 99国产精品免费视频| 韩国精品视频在线观看| 欧美大片一区二区| 国产精品久久久久久久av福利| 伊人色综合一区二区三区影院视频| 色国产精品一区在线观看| 精品无码国模私拍视频| 激情影院在线| 亚洲另类在线一区| 俄罗斯av网站| 国产午夜久久av| 欧美日韩一区不卡| 日韩一级理论片| 韩日成人影院| 日韩一区二区在线观看视频| 色播五月综合网| 视频精品导航| 欧美精品一区二| 蜜臀aⅴ国产精品久久久国产老师| 爽爽窝窝午夜精品一区二区| 亚洲国产精品成人va在线观看| 国产精品www爽爽爽| 风间由美性色一区二区三区四区 | 久久久久亚洲蜜桃| 欧美日韩中文字幕在线播放| 毛片在线视频| 日韩欧美在线免费| 粉嫩虎白女毛片人体| 神马久久资源| 欧美日韩一卡二卡三卡 | 五月婷婷激情久久| 玖玖玖免费嫩草在线影院一区| 欧美成人福利视频| 超薄肉色丝袜一二三| 99亚洲伊人久久精品影院红桃| 98视频在线噜噜噜国产| 一本色道久久综合亚洲| 免费成人小视频| 精品国产乱码久久久久久108| 色欲av永久无码精品无码蜜桃| 国产精品国产三级国产普通话99| 中文字幕色一区二区| 黄黄的网站在线观看| 91久久精品网| 免费黄色在线视频| 成人午夜国产| 国产91精品最新在线播放| 欧美一区二区三区久久久| 蜜臀99久久精品久久久久久软件| 老牛影视免费一区二区| 韩国三级在线观看久| 国产精品美女久久久久高潮| 99久久激情视频| 九九热线有精品视频99| 日韩网站免费观看高清| 中文字幕 国产精品| 国产亚洲精品中文字幕| 伊人久久大香线蕉成人综合网| 345成人影院| 亚洲男人天堂2024| 欧美一区二区三区四区夜夜大片| 中文字幕久久一区| 日韩不卡免费高清视频| 日韩精品免费在线| 成人小视频免费看| 日本中文字幕一区二区有限公司| 欧美久久综合性欧美| 1024视频在线| 亚洲综合久久av| 国产精品无码一本二本三本色| 欧美xxxx性| 色噜噜狠狠狠综合曰曰曰| 久草视频在线资源| 东方欧美亚洲色图在线| 欧日韩一区二区三区| 精品3atv在线视频| 伊人亚洲福利一区二区三区| 国产一区二区小视频| 91免费小视频| 91网站在线观看免费| 亚洲一区二区三区中文字幕在线观看 | 咪咪色在线视频| 日韩精品一级| 亚洲片国产一区一级在线观看| 国产老头老太做爰视频| 久久av最新网址| 国产99午夜精品一区二区三区| 国产丝袜精品丝袜| 亚洲日韩中文字幕| 一二三四区在线| 亚洲精品大片www| 污污网站免费看| 中文无码久久精品| 国产精品一久久香蕉国产线看观看| 亚洲精品国产一区二| 精品成人乱色一区二区| 性高潮久久久久久| 亚洲美女色禁图| 一区二区三区精品国产| 台湾佬成人网| 久久天堂电影网| 中文字幕精品在线观看| 久久久久国产精品麻豆| 97人人爽人人| 国产亚洲精品v| 一区二区三区在线观看www| 国产精品三p一区二区| 国产精品久久久| 国产尤物视频在线| 日韩欧美一区二区不卡| 亚洲欧美一二三区| 亚洲综合色自拍一区| 国产伦理片在线观看| 久久久亚洲人| 欧美日韩精品久久久免费观看| 亚洲欧美久久精品| 久久天天躁狠狠躁夜夜躁| 日日夜夜精品免费| 91精品国产综合久久香蕉麻豆| 农村老熟妇乱子伦视频| www.欧美.com| 欧美视频在线播放一区| 无码一区二区三区视频| 91久久精品国产91久久| 精品国产丝袜高跟鞋| 日韩精品视频中文在线观看| 日本a在线观看| 粉嫩久久99精品久久久久久夜 | 日韩脚交footjobhd| 亚洲国产日韩欧美在线动漫 | 欧美mv日韩mv国产网站| 中文字幕av片| 在线精品视频小说1| 亚洲毛片亚洲毛片亚洲毛片| 91蜜桃网址入口| 天天躁日日躁狠狠躁av| 99精品99| 97中文字幕在线| 欧美日日夜夜| av资源一区二区| 国产精品99久久免费| 国产精品嫩草视频| 久草在线中文最新视频| 九九热最新视频//这里只有精品| 午夜在线免费观看视频| 伊人精品在线观看| 国产视频二区在线观看| 在线综合+亚洲+欧美中文字幕| 久久青青草原亚洲av无码麻豆| 亚洲成人资源网| 国产成人免费观看视频| 国产日韩欧美a| 国产亚洲精品熟女国产成人| 国产在线播放一区三区四| 国产免费一区二区视频| 国产探花一区二区| 久久99精品久久久久久青青日本| 粉嫩一区二区三区| 日韩av日韩在线观看| 国产精欧美一区二区三区蓝颜男同| 91国产美女在线观看| 多野结衣av一区| 色噜噜国产精品视频一区二区 | 亚洲视频在线一区二区| 午夜免费福利影院| 粉嫩aⅴ一区二区三区四区五区| 秋霞午夜鲁丝一区二区| 粉嫩欧美一区二区三区高清影视| 动漫美女无遮挡免费| 不卡的av中国片| 亚洲久久中文字幕| 精品制服美女久久| www黄色av| 日韩在线观看一区二区| 91动漫在线看| 国产精品嫩草99av在线| 国产淫片av片久久久久久| 日韩成人精品在线| 欧美激情第一区| 日本午夜精品一区二区三区电影| 国产免费又粗又猛又爽| 国产一区二区在线观看视频| 精品国产aⅴ一区二区三区东京热 久久久久99人妻一区二区三区 | www三级免费| 欧美性xxxxx极品少妇| 一区二区三区麻豆| 日韩一区二区视频| 国产精品国产高清国产| 正在播放国产一区| 男人的天堂在线免费视频| 精品伦理精品一区| 国产资源在线看| 欧美成人精品一区| 国产精品刘玥久久一区| 欧美精品成人91久久久久久久| 黄色小网站在线观看| 久久久久久久久久久免费| 欧美一区国产| 91午夜在线播放| 伊甸园亚洲一区| 日本午夜精品电影| 欧美1级日本1级| 欧美丰满熟妇xxxxx| 国产成人精品一区二区三区四区| 亚洲日本黄色片| 99精品欧美一区二区三区小说| 一区二区三区四区影院| 久久久久国产精品麻豆ai换脸 | 极品蜜桃臀肥臀-x88av| 亚洲一区二区精品3399| 最近中文字幕av| 亚洲福利在线视频| 成人在线视频亚洲| 久久久91精品国产| 亚洲一二三四| 成人欧美视频在线| 久久精品国产大片免费观看| 婷婷精品国产一区二区三区日韩| 国产影视一区| 国产手机免费视频| 久久精品国产一区二区三 | 一本一道无码中文字幕精品热| 在线不卡a资源高清| 国产绿帽一区二区三区| 亚洲视频精品在线| sm久久捆绑调教精品一区| 91久久国产精品| 色无极亚洲影院| 丰满少妇在线观看| 91香蕉视频mp4| 国产精品50页| 欧美午夜精品久久久久久浪潮| 国产内射老熟女aaaa∵| 中文字幕久热精品视频在线| 日本黄色免费在线| 国产精品久久久久久久小唯西川| 99久久精品网| 欧美在线aaa| 激情伊人五月天久久综合| 亚洲一区二区三区蜜桃| 精品久久久久久中文字幕一区奶水 | 日韩一区二区影院| 黄色网页在线免费看| 国产精品中文字幕久久久| 精品国产99| 天天成人综合网| 欧美aaaaa成人免费观看视频| 9.1成人看片免费版| 日韩欧美中文免费| 蜜桃成人在线视频| 日本精品视频在线观看| 日韩动漫一区| 免费在线a视频| 2022国产精品视频| 久久福利免费视频| 欧美日韩综合不卡| av在线免费播放网站| 欧美大片在线免费观看| 99er精品视频| 成人毛片100部免费看| 国产超碰在线一区| 日韩欧美高清在线观看| 日韩高清欧美高清| 欧美男女交配| 亚洲精品成人自拍| 亚洲经典在线| 欧美一区二区三区成人精品| 色综合久久久久久久久| 国产suv一区二区| 亚洲老头同性xxxxx| 欧美大片免费观看网址| 亚洲欧洲精品一区| 国产乱码精品一区二区三区忘忧草 | 亚洲精华一区二区三区| 久久综合久久色| 中文字幕日韩欧美一区二区三区| 色网站在线播放| 亚洲欧美国产精品| 国内欧美日韩| 阿v天堂2018| 久久久久久久网| 一起草av在线| 欧美激情久久久久| 国产麻豆一区二区三区精品视频| av网站在线不卡| 一区二区三区不卡视频在线观看 | 色播一区二区| 黄www在线观看| 中文字幕在线观看一区| 丁香花免费高清完整在线播放| 最近2019中文字幕一页二页| 国产精品毛片aⅴ一区二区三区| 国产 日韩 欧美在线| 国产精品一级二级三级| 国产无码精品在线播放| 国产性猛交xxxx免费看久久| 两个人看的在线视频www| 日日夜夜精品网站| 国产激情视频一区二区在线观看| 天天操天天摸天天干| 精品国产露脸精彩对白| gogo亚洲高清大胆美女人体| 自拍另类欧美| 91蝌蚪porny| 国产91视频在线| 国产成人精品av| 精品少妇av| 婷婷五月精品中文字幕| 欧美日韩在线免费视频| av成人福利| 久久超碰亚洲|