国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

瀏覽:7日期:2022-08-21 08:33:38

一.前言

在日常的開發(fā)中,經(jīng)常需要對(duì)方法參數(shù)進(jìn)行校驗(yàn)(非空、長(zhǎng)度等)。如果采用hardcode去校驗(yàn)(if..else..),會(huì)造成代碼冗余,復(fù)用性低,導(dǎo)致維護(hù)成本比較高。借助Validation組件,可以很方便地通過注解來校驗(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框架沒有半毛錢關(guān)系,它提供了JSR的實(shí)現(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>

手動(dòng)添加bean :

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

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

Controller層上用法:

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

@RestController@RequestMapping('/api')publicclassPeopleController {@AutowiredprivatePeopleService 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來使用。這是因?yàn)镾pring給我們創(chuàng)建了一個(gè)用于參數(shù)校驗(yàn)的AOP切面邏輯,過濾方式就是class被@Validated修飾的bean對(duì)象。所以我們可以使用@Validated來修飾我們的service層實(shí)現(xiàn)類:

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

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

四.原理

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

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

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

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

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 国产免费影院 | 欧美成人一级片 | 欧美成人观看视频在线 | 亚洲精品一级一区二区三区 | 三级午夜三级三点在看 | 亚洲综合免费 | 亚洲精品欧洲久久婷婷99 | 国产成人午夜片在线观看 | 国产在视频线在精品 | 最新国产成人综合在线观看 | 99精彩视频 | 免费人成黄页网站在线观看国产 | 久久精品一区二区三区中文字幕 | 中文字幕亚洲精品久久 | 亚洲线精品久久一区二区三区 | 97影院理论在线观看 | 天堂av2017男人的天堂 | 欧美激情一区二区亚洲专区 | 免费 欧美 自拍 在线观看 | 色视频www在线播放国产人成 | 国产9191精品免费观看 | 久久国产精品免费网站 | 91原创视频在线观看 | 狠狠色丁香婷婷综合久久来 | 国产v综合v亚洲欧美大另类 | 日本草草影院 | 毛片基地看看成人免费 | 河边性xxxxfreexxxxx| 一级特黄国产高清毛片97看片 | 欧美日韩亚洲视频 | 97青草香蕉依人在线播放 | 午夜精品影院 | 免费国产不卡午夜福在线观看 | 国产一区私人高清影院 | 成人国产精品一级毛片视频 | 久久香蕉精品成人 | 好吊色综合网天天高清 | 欧美a级完整在线观看 | 久久精品国产亚洲 | 久久精品国产一区二区 | 国产农村乱子伦精品视频 |