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

springboot異步處理@NotBlank或@NotNull注釋校驗(yàn)不生效問題

 更新時(shí)間:2024年01月23日 08:39:25   作者:今天寫bug了嗎?  
這篇文章主要介紹了springboot異步處理@NotBlank或@NotNull注釋校驗(yàn)不生效問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

問題描述

 在springboot中開啟異步后,再異步方法中使用service層方法進(jìn)行插入,如果開始了@NotBlank 或者@NotNull的時(shí)候,發(fā)現(xiàn)校驗(yàn)不生效。

解決方式

?實(shí)現(xiàn)方法:

@Data
public class A{

    @NotBlank(message = "name不能為空")
    private String name;
    
    @NotBlank(message = "age")
    private String age;

    
}
public class IAServiceImpl implements IAService {
    
    //獲取校驗(yàn)的Bean
    private final Validator validator;

    public IAServiceImpl() {
        this.validator = Validation.buildDefaultValidatorFactory().getValidator();
    }
    
     @Async
    public void export(A a) {
        //異步方式中調(diào)用A插入,失敗則可以獲取到message中的信息了
        try{
           insert(a) 
        }catch(Exception e){
            logger.error("插入失?。?,e.getMessage())
        }
        
    }
    
    @Override
    public int insert(@Validated A a) {
        //獲取校驗(yàn)
        Set<ConstraintViolation<A>> violations = validator.validate(A);
        if (!violations.isEmpty()) {
            throw new RuntimeException(violations.iterator().next().getMessage());
        } else {
            return aMapper.insert(A);
        }
    }
}

擴(kuò)展:如何開啟分組校驗(yàn)

如果使用了分組校驗(yàn),則需要添加參數(shù)

實(shí)現(xiàn)方法:

@Data
public class A{

    //定義插入接口
    public interface Insert {}

    public interface Update {}

    
    @NotBlank(message = "name不能為空", groups = {Insert.class})
    private String name;
    
    @NotBlank(message = "age",groups = {Update.class})
    private String age;

    
}
public class IAServiceImpl implements IAService {
    
    //獲取校驗(yàn)的Bean
    private final Validator validator;

    public IAServiceImpl() {
        this.validator = Validation.buildDefaultValidatorFactory().getValidator();
    }
    
     @Async
    public void export(A a) {
        //異步方式中調(diào)用A插入,失敗則可以獲取到message中的信息了
        try{
           insert(a) 
        }catch(Exception e){
            logger.error("插入失敗:",e.getMessage())
        }
        
    }
    
    @Override
    public int insert(@Validated A a) {
        //獲取校驗(yàn) 開啟分組后這樣就只會(huì)校驗(yàn)插入分組的校驗(yàn)信息
        Set<ConstraintViolation<A>> violations = validator.validate(A,A.Insert.class);
        if (!violations.isEmpty()) {
            throw new RuntimeException(violations.iterator().next().getMessage());
        } else {
            return aMapper.insert(A);
        }
    }
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot+React實(shí)現(xiàn)計(jì)算個(gè)人所得稅

    SpringBoot+React實(shí)現(xiàn)計(jì)算個(gè)人所得稅

    本文將以個(gè)人所得稅的計(jì)算為例,使用React+SpringBoot+GcExcel來實(shí)現(xiàn)這一功能,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解下
    2023-09-09
  • 淺析Java中的繼承與組合

    淺析Java中的繼承與組合

    本文將介紹組合和繼承的概念及區(qū)別,并從多方面分析在寫代碼時(shí)如何進(jìn)行選擇。文中通過示例代碼介紹的很詳細(xì),有需要的朋友可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • Spring中的@CrossOrigin注解的使用詳細(xì)解讀

    Spring中的@CrossOrigin注解的使用詳細(xì)解讀

    這篇文章主要介紹了Spring中的@CrossOrigin注解的使用詳細(xì)解讀,跨源資源共享(CORS),是由大多數(shù)瀏覽器實(shí)現(xiàn)的W3C規(guī)范,允許對(duì)跨域請(qǐng)求進(jìn)行靈活授權(quán),用來代替IFRAME或JSONP等非正規(guī)實(shí)現(xiàn)方式,需要的朋友可以參考下
    2023-11-11
  • Java實(shí)戰(zhàn)員工績(jī)效管理系統(tǒng)的實(shí)現(xiàn)流程

    Java實(shí)戰(zhàn)員工績(jī)效管理系統(tǒng)的實(shí)現(xiàn)流程

    只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+Mysql+Maven+HTML實(shí)現(xiàn)一個(gè)員工績(jī)效管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2022-01-01
  • 帶你輕松搞定Java面向?qū)ο蟮木幊?-數(shù)組,集合框架

    帶你輕松搞定Java面向?qū)ο蟮木幊?-數(shù)組,集合框架

    Java是面向?qū)ο蟮母呒?jí)編程語(yǔ)言,類和對(duì)象是 Java程序的構(gòu)成核心。圍繞著Java類和Java對(duì)象,有三大基本特性:封裝是Java 類的編寫規(guī)范、繼承是類與類之間聯(lián)系的一種形式、而多態(tài)為系統(tǒng)組件或模塊之間解耦提供了解決方案
    2021-06-06
  • Java多線程并發(fā)synchronized?關(guān)鍵字

    Java多線程并發(fā)synchronized?關(guān)鍵字

    這篇文章主要介紹了Java多線程并發(fā)synchronized?關(guān)鍵字,Java?在虛擬機(jī)層面提供了?synchronized?關(guān)鍵字供開發(fā)者快速實(shí)現(xiàn)互斥同步的重量級(jí)鎖來保障線程安全。
    2022-06-06
  • 基于紅黑樹插入操作原理及java實(shí)現(xiàn)方法(分享)

    基于紅黑樹插入操作原理及java實(shí)現(xiàn)方法(分享)

    下面小編就為大家分享一篇基于紅黑樹插入操作原理及java實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Java中如何比較兩個(gè)數(shù)組中元素是否相同

    Java中如何比較兩個(gè)數(shù)組中元素是否相同

    比較兩個(gè)數(shù)組中的元素是否相同,在項(xiàng)目中經(jīng)常會(huì)使用到,下面與大家分享個(gè)最簡(jiǎn)單的方法
    2014-06-06
  • Java判斷閏年的2種方法示例

    Java判斷閏年的2種方法示例

    這篇文章主要給大家介紹了關(guān)于Java判斷閏年的2種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Spring?中的切面與事務(wù)結(jié)合使用完整示例

    Spring?中的切面與事務(wù)結(jié)合使用完整示例

    本文給大家介紹Spring中的切面與事務(wù)結(jié)合使用完整示例,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-08-08

最新評(píng)論

肃南| 上思县| 昭通市| 龙山县| 西盟| 葫芦岛市| 丹巴县| 文登市| 沙田区| 崇文区| 盐山县| 镇坪县| 双牌县| 抚顺县| 疏附县| 偃师市| 康保县| 新化县| 太仆寺旗| 苗栗县| 平昌县| 河津市| 措勤县| 资溪县| 周至县| 常州市| 垫江县| 关岭| 长乐市| 楚雄市| 紫云| 南城县| 镇原县| 芮城县| 大庆市| 黄梅县| 秭归县| 威海市| 丰县| 成武县| 鹤峰县|