亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java Validation方法入?yún)⑿r瀸崿F(xiàn)過程解析

 更新時間:2020年11月18日 08:30:34   作者:鳥巢的Java成神之路  
這篇文章主要介紹了Java Validation方法入?yún)⑿r瀸崿F(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

一.前言

在日常的開發(fā)中,經(jīng)常需要對方法參數(shù)進(jìn)行校驗(非空、長度等)。如果采用hardcode去校驗(if..else..),會造成代碼冗余,復(fù)用性低,導(dǎo)致維護(hù)成本比較高。借助Validation組件,可以很方便地通過注解來校驗參數(shù)。

二.Java Validation組件

JSR

JSR 是一種規(guī)范標(biāo)準(zhǔn),規(guī)定了一些校驗規(guī)范的注解,位于javax.validation.constraints包下,只提供規(guī)范不提供實現(xiàn),如@NotNull,@Size 等

Hibernate Validation

hibernate Validation 與 hibernate ORM框架沒有半毛錢關(guān)系,它提供了JSR的實現(xiàn),位于org.hibernate.validator.constraints包下。

三.用法

引入依賴:

<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>

手動添加bean :

對實體類添加注解:

@Data
publicclassPeople {
	@NotNull(message = "姓名不能為空")
	privateStringname;
	@Min(value = 1, message = "年齡不能小于1歲")
	privateInteger size;
}

Controller層上用法:

如果在Spring的Controller層引用以上Java Bean對象,則需要加上@Valid注解,用法如下:

@RestController
@RequestMapping("/api")
publicclassPeopleController {
	@Autowired
	privatePeopleService peopleService;
	@RequestMapping("/addPeople")
	publicStringaddPeople(@Valid@RequestBodyPeople people) {
		peopleService.addPeople(people);
		return"ok";
	}
}

Service層上用法:

@Valid注解,當(dāng)我們用Service接口層的時候,會發(fā)現(xiàn)參數(shù)校驗邏輯是不生效的。要向讓@Valid注解在controller層以外的地方生效,必須配合@Validated來使用。這是因為Spring給我們創(chuàng)建了一個用于參數(shù)校驗的AOP切面邏輯,過濾方式就是class被@Validated修飾的bean對象。所以我們可以使用@Validated來修飾我們的service層實現(xiàn)類:

@Validated
 public interface PeopleService {
 voidaddPeople(@ValidPeople people);
}


Controller層不需要@Validated注解是因為在Spring的controller層有數(shù)據(jù)綁定和校驗的過程,默認(rèn)就會對@Valid修飾的方法參數(shù)使用Validator來做校驗邏輯。

四.原理

1.利用Spring ioc,注入MethodValidationPostProcessor和LocalValidatorFactoryBean。

2.利用Spring ioc提供的擴(kuò)展點(diǎn)(BeanPostProcessor, InitializingBean),初始化攔截器MethodValidationInterceptor

3.MethodValidationPostProcessor用來生成和植入攔截器MethodValidationInterceptor,調(diào)用方法時自動攔截。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Boot 集成MyBatis 教程詳解

    Spring Boot 集成MyBatis 教程詳解

    這篇文章主要介紹了Spring Boot 集成MyBatis 教程詳解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-04-04
  • Java BufferedReader相關(guān)源碼實例分析

    Java BufferedReader相關(guān)源碼實例分析

    這篇文章主要介紹了Java BufferedReader相關(guān)源碼實例分析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • Spring MVC 中獲取session的幾種方法(小結(jié))

    Spring MVC 中獲取session的幾種方法(小結(jié))

    這篇文章主要介紹了Spring MVC 中獲取session的幾種方法(小結(jié)),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • java 一鍵部署 jar 包和 war 包

    java 一鍵部署 jar 包和 war 包

    這篇文章主要介紹了Java創(chuàng)建打包命令、創(chuàng)建啟動文件等功能實現(xiàn)Java一鍵部署 jar 包和 war 包,感興趣的下伙伴可以參考下文
    2021-09-09
  • 一篇文章帶你了解Java SpringMVC返回null

    一篇文章帶你了解Java SpringMVC返回null

    這篇文章主要介紹了Spring MVC返回null,文中講的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-10-10
  • MyBatis-Plus中使用EntityWrappe進(jìn)行列表數(shù)據(jù)倒序設(shè)置方式

    MyBatis-Plus中使用EntityWrappe進(jìn)行列表數(shù)據(jù)倒序設(shè)置方式

    這篇文章主要介紹了MyBatis-Plus中使用EntityWrappe進(jìn)行列表數(shù)據(jù)倒序設(shè)置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java尋找迷宮路徑的簡單實現(xiàn)示例

    java尋找迷宮路徑的簡單實現(xiàn)示例

    這篇文章主要介紹了java尋找迷宮路徑的簡單實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Java導(dǎo)出Excel統(tǒng)計報表合并單元格的方法詳解

    Java導(dǎo)出Excel統(tǒng)計報表合并單元格的方法詳解

    我們在日常編程過程中,總是會碰見導(dǎo)出相關(guān)表格信息的需求,所以就讓我們一起來學(xué)習(xí)一下,這篇文章主要給大家介紹了關(guān)于Java導(dǎo)出Excel統(tǒng)計報表合并單元格的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • 詳解Spring-Cloud2.0之Feign調(diào)用遠(yuǎn)程服務(wù)指南

    詳解Spring-Cloud2.0之Feign調(diào)用遠(yuǎn)程服務(wù)指南

    這篇文章主要介紹了詳解Spring-Cloud2.0之Feign調(diào)用遠(yuǎn)程服務(wù)指南,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 利用java判斷字符串中有漢字?(常用正則表達(dá)式)

    利用java判斷字符串中有漢字?(常用正則表達(dá)式)

    最近工作中遇到了一個需求,需要利用java獲取字符串中的數(shù)字,嘗試幾種方法后發(fā)現(xiàn)利用正則表達(dá)式實現(xiàn)最為方便,這篇文章主要給大家介紹了關(guān)于如何利用java判斷字符串中有漢字?的相關(guān)資料,文中還分享了一些常用正則表達(dá)式,需要的朋友可以參考下
    2023-10-10

最新評論