springboot異步處理@NotBlank或@NotNull注釋校驗不生效問題
更新時間:2024年01月23日 08:39:25 作者:今天寫bug了嗎?
這篇文章主要介紹了springboot異步處理@NotBlank或@NotNull注釋校驗不生效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
問題描述
在springboot中開啟異步后,再異步方法中使用service層方法進行插入,如果開始了@NotBlank 或者@NotNull的時候,發(fā)現(xiàn)校驗不生效。
解決方式
?實現(xiàn)方法:
@Data public class A{ @NotBlank(message = "name不能為空") private String name; @NotBlank(message = "age") private String age; }
public class IAServiceImpl implements IAService { //獲取校驗的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) { //獲取校驗 Set<ConstraintViolation<A>> violations = validator.validate(A); if (!violations.isEmpty()) { throw new RuntimeException(violations.iterator().next().getMessage()); } else { return aMapper.insert(A); } } }
擴展:如何開啟分組校驗
如果使用了分組校驗,則需要添加參數(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 { //獲取校驗的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) { //獲取校驗 開啟分組后這樣就只會校驗插入分組的校驗信息 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); } } }
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
MyBatisPlus 一對多、多對一、多對多的完美解決方案
這篇文章主要介紹了MyBatisPlus 一對多、多對一、多對多的完美解決方案,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11JAVA SpringBoot統(tǒng)一日志處理原理詳解
這篇文章主要介紹了SpringBoot的統(tǒng)一日志處理原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-09-09SpringBatch數(shù)據(jù)寫入實現(xiàn)
Spring Batch通過ItemWriter接口及其豐富的實現(xiàn),提供了強大的數(shù)據(jù)寫入能力,本文主要介紹了SpringBatch數(shù)據(jù)寫入實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2025-04-04