最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java Validation方法入?yún)⑿r?yàn)實(shí)現(xiàn)過(guò)程解析

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

一.前言

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

二.Java Validation組件

JSR

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

Hibernate Validation

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

三.用法

引入依賴(lài):

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

手動(dòng)添加bean :

對(duì)實(shí)體類(lèi)添加注解:

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

Controller層上用法:

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

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

Service層上用法:

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

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


Controller層不需要@Validated注解是因?yàn)樵赟pring的controller層有數(shù)據(jù)綁定和校驗(yàn)的過(guò)程,默認(rèn)就會(huì)對(duì)@Valid修飾的方法參數(shù)使用Validator來(lái)做校驗(yàn)邏輯。

四.原理

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

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

3.MethodValidationPostProcessor用來(lái)生成和植入攔截器MethodValidationInterceptor,調(diào)用方法時(shí)自動(dòng)攔截。

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

相關(guān)文章

  • springboot利用@Aspect實(shí)現(xiàn)日志工具類(lèi)的詳細(xì)代碼

    springboot利用@Aspect實(shí)現(xiàn)日志工具類(lèi)的詳細(xì)代碼

    這篇文章主要介紹了springboot利用@Aspect實(shí)現(xiàn)日志工具類(lèi),通過(guò)實(shí)例代碼介紹了導(dǎo)包及在啟動(dòng)類(lèi)上進(jìn)行注解自動(dòng)掃描的方法,需要的朋友可以參考下
    2022-03-03
  • 解決idea web工程修改js文件之后不變化的問(wèn)題

    解決idea web工程修改js文件之后不變化的問(wèn)題

    這篇文章主要介紹了解決idea web工程修改js文件之后不變化的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Java實(shí)現(xiàn)字符串切割的方法詳解

    Java實(shí)現(xiàn)字符串切割的方法詳解

    這篇文章主要為大家介紹了一些Java中切割字符串的小技巧,可以把性能提升5~10倍。文中的示例代碼講解詳細(xì),快跟隨小編一起學(xué)習(xí)一下
    2022-03-03
  • 基于Java制作一個(gè)好玩的打飛機(jī)游戲

    基于Java制作一個(gè)好玩的打飛機(jī)游戲

    這篇文章主要介紹了基于Java制作的打飛機(jī)小游戲,這里整理了詳細(xì)的代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 詳解Java如何使用注解來(lái)配置Spring容器

    詳解Java如何使用注解來(lái)配置Spring容器

    這篇文章我們將介紹如何在Java代碼中使用注解來(lái)配置Spring容器,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定參考價(jià)值,感興趣的可以了解一下
    2022-06-06
  • springboot+thymeleaf+shiro標(biāo)簽的實(shí)例

    springboot+thymeleaf+shiro標(biāo)簽的實(shí)例

    這篇文章主要介紹了springboot+thymeleaf+shiro標(biāo)簽的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 利用java判斷字符串中有漢字?(常用正則表達(dá)式)

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

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

    Maven中設(shè)置阿里云鏡像的全流程

    在Maven項(xiàng)目中,配置阿里云鏡像可以顯著提高依賴(lài)下載的速度和穩(wěn)定性,以下是詳細(xì)步驟,包括準(zhǔn)備工作、修改settings.xml文件、驗(yàn)證配置以及實(shí)際案例和示例代碼,通過(guò)這些步驟,你可以輕松地將Maven配置為使用國(guó)內(nèi)的鏡像源
    2025-02-02
  • Java MyBatis可視化代碼生成工具使用教程

    Java MyBatis可視化代碼生成工具使用教程

    這篇文章主要介紹了Java MyBatis可視化代碼生成工具使用教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java并發(fā)編程示例(六):等待線(xiàn)程執(zhí)行終止

    Java并發(fā)編程示例(六):等待線(xiàn)程執(zhí)行終止

    這篇文章主要介紹了Java并發(fā)編程示例(六):等待線(xiàn)程執(zhí)行終止,在本節(jié),示例程序演示等待初始化方法完成后,再去執(zhí)行其他任務(wù),需要的朋友可以參考下
    2014-12-12

最新評(píng)論

岗巴县| 陆良县| 新巴尔虎右旗| 韶山市| 光泽县| 汝南县| 阳高县| 六枝特区| 遵化市| 永善县| 元朗区| 东丰县| 吉安县| 张家港市| 德化县| 平阳县| 齐齐哈尔市| 宝鸡市| 贞丰县| 兴宁市| 寿光市| 镇赉县| 梁平县| 新泰市| 普兰店市| 藁城市| 榕江县| 天祝| 大关县| 稷山县| 丰原市| 平塘县| 崇信县| 榆中县| 天门市| 邢台县| 长汀县| 兖州市| 洪雅县| 阜新市| 西林县|