欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot使用validation做參數(shù)校驗的實現(xiàn)步驟

 更新時間:2021年05月07日 10:38:56   作者:小小小LIN子  
這篇文章主要介紹了SpringBoot使用validation做參數(shù)校驗的實現(xiàn)步驟,幫助大家更好的理解和學習使用SpringBoot,感興趣的朋友可以了解下

1.添加依賴

直接添加 hibernate-validator

<dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.0.2.Final</version>
        </dependency>

添加spring-boot-starter-validation

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
            <version>1.4.0.RELEASE</version>
        </dependency>

添加spring-boot-starter-web

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

2. 配置文件,如果想要設置fail_fast屬性的話,true表示有一個參數(shù)出錯即返回,默認的時檢驗所有的參數(shù),那么必須要有配置文件

import org.hibernate.validator.HibernateValidator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;
import org.springframework.validation.beanvalidation.SpringValidatorAdapter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;

/**
 * hibernate參數(shù)驗證配置
 */
@Configuration
public class ValidatorConfig extends WebMvcConfigurerAdapter {


    @Bean
    public Validator validator() {
        ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)
                .configure()
                // 將fail_fast設置為true即可,如果想驗證全部,則設置為false或者取消配置即可
                .failFast(true)
//                .addProperty("hibernate.validator.fail_fast", "true")
                .buildValidatorFactory();

        return validatorFactory.getValidator();
    }

    /**
     * requestParam方式的校驗
     * @return
     */
    @Bean
    public MethodValidationPostProcessor methodValidationPostProcessor() {

        MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor();
        methodValidationPostProcessor.setValidator(validator());
        return methodValidationPostProcessor;
    }


    @Override
    public org.springframework.validation.Validator getValidator() {
        return new SpringValidatorAdapter(validator());
    }

}

其中methodValidationPostProcessor是對requestParam起作用

繼承WebMvcConfigurerAdapter 并且重寫getValidator()方法,是讓spring的請求校驗Validator使用我們上邊的validator,讓設置的failFast生效,具體可參考org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport#mvcValidator方法

3.統(tǒng)一異常處理

/**
     * hibernate-valid實體類形式接受參數(shù)驗證失敗
     * @param ex
     * @return
     */
    @ExceptionHandler(BindException.class)
    @ResponseBody
    public WebResult validationErrorHandler(BindException ex) {
        List<String> collect = ex.getBindingResult().getAllErrors()
                .stream()
                .map(ObjectError::getDefaultMessage)
                .collect(Collectors.toList());
        return new WebResult(Errors.INCORRECT_PARAM_FORMAT.getError(), StringUtils.join(collect, ";"));

    }

    /**
     * hibernate-valid實體類形式接受參數(shù)驗證失敗
     * @param ex
     * @return
     */
    @ExceptionHandler(MethodArgumentNotValidException.class)
    @ResponseBody
    public WebResult validationErrorHandler(MethodArgumentNotValidException ex) {
        List<String> collect = ex.getBindingResult().getAllErrors()
                .stream()
                .map(ObjectError::getDefaultMessage)
                .collect(Collectors.toList());
        return new WebResult(Errors.INCORRECT_PARAM_FORMAT.getError(), StringUtils.join(collect, ";"));

    }



    /**
     * RequestParam方式參數(shù)校驗
     * @param ex
     * @return
     */
    @ExceptionHandler(ConstraintViolationException.class)
    @ResponseBody
    public WebResult validationErrorHandler(ConstraintViolationException ex) {
        List<String> errorInformation = ex.getConstraintViolations()
                .stream()
                .map(ConstraintViolation::getMessage)
                .collect(Collectors.toList());
        return new WebResult(Errors.INCORRECT_PARAM_FORMAT.getError(),StringUtils.join(errorInformation, ";"));
    }

4.使用

如果是@RequestParam這樣直接寫參數(shù)校驗的話,在類上或者對應方法上加上Validated注解,如果是實體類接受的話,在參數(shù)中的實體前加上@Valid即可

以上就是SpringBoot使用validation做參數(shù)校驗的實現(xiàn)步驟的詳細內(nèi)容,更多關于SpringBoot使用validation做參數(shù)校驗的資料請關注腳本之家其它相關文章!

相關文章

  • springboot+mybatis報錯找不到實體類的問題

    springboot+mybatis報錯找不到實體類的問題

    這篇文章主要介紹了springboot+mybatis報錯找不到實體類的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • elasticsearch?java客戶端action的實現(xiàn)簡單分析

    elasticsearch?java客戶端action的實現(xiàn)簡單分析

    這篇文章主要為大家介紹了elasticsearch?java客戶端action的實現(xiàn)簡單分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • JavaWeb中的常用的請求傳參注解說明

    JavaWeb中的常用的請求傳參注解說明

    這篇文章主要介紹了JavaWeb中的常用的請求傳參注解說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • SpringCloud實現(xiàn)文件上傳功能的方法詳解

    SpringCloud實現(xiàn)文件上傳功能的方法詳解

    這篇文章主要為大家詳細介紹了SpringCloud如何實現(xiàn)文件上傳功能,文中的示例代碼講解詳細,對我們學習有一定的借鑒價值,需要的可以參考一下
    2022-08-08
  • 使用Java反射獲取方法的全路徑名稱的步驟

    使用Java反射獲取方法的全路徑名稱的步驟

    Java反射是一個強大的特性,它允許程序在運行時查詢和修改類的行為,反射可以用于實現(xiàn)很多高級功能,比如動態(tài)代理、依賴注入等,本文將介紹如何使用Java反射來實現(xiàn)這一功能,需要的朋友可以參考下
    2024-07-07
  • SpringBoot攔截器讀取流后不能再讀取的問題

    SpringBoot攔截器讀取流后不能再讀取的問題

    這篇文章主要介紹了SpringBoot攔截器讀取流后不能再讀取的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java8 使用流抽取List<T>集合中T的某個屬性操作

    Java8 使用流抽取List<T>集合中T的某個屬性操作

    這篇文章主要介紹了Java8 使用流抽取List<T>集合中T的某個屬性操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java中FileOutputStream類的使用

    Java中FileOutputStream類的使用

    java.io.FileOutputStream類是文件輸出流,用于將數(shù)據(jù)寫出到文件,下面就來介紹一下Java中FileOutputStream類的使用,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • SpringBoot項目導出jar包及瘦身部署方式

    SpringBoot項目導出jar包及瘦身部署方式

    今天項目要求Nginx+jar包運行多個項目,在此記錄一下部署的過程,其中借鑒了好多網(wǎng)上前輩的經(jīng)驗,感謝各位的無私分享
    2024-07-07
  • RabbitMQ的Direct Exchange模式實現(xiàn)的消息發(fā)布案例(示例代碼)

    RabbitMQ的Direct Exchange模式實現(xiàn)的消息發(fā)布案例(示例代碼)

    本文介紹了RabbitMQ的DirectExchange模式下的消息發(fā)布和消費的實現(xiàn),詳細說明了如何在DirectExchange模式中進行消息的發(fā)送和接收,以及消息處理的基本方法,感興趣的朋友跟隨小編一起看看吧
    2024-09-09

最新評論