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

詳解SpringBoot中@NotNull,@NotBlank注解使用

 更新時間:2022年08月23日 14:29:41   作者:羈客%  
這篇文章主要為大家詳細(xì)介紹了Spring?Boot中集成Validation與@NotNull,@NotBlank等注解的簡單使用,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

一.添加依賴

<!-- spring-boot 2.3及以上的版本只需要引入下面的依賴 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

二.在類中使用驗(yàn)證注解

1.創(chuàng)建驗(yàn)證實(shí)體類(嵌套使用)

@Data
public class UserDto{
 
    @NotBlank(message = "請輸入用戶名稱")
    private String userName;
 
    @NotBlank(message = "請正確輸入密碼")
    @Length(min = 6,max = 18)
    private String password;
 
    @Email(message = "請正確輸入郵箱")
    private String email;
 
 
    @Valid
    @NotEmpty(message = "角色不能為空")
    private List<RoleDto> roleDtos;
 
}
//被嵌套的類
@Data
public class roleDto{
 
    @NotNull(message = "角色I(xiàn)D不能為空")
    private Integer roleId;
 
    @NotBlank(message = "請輸入角色名稱")
    private String roleName;
 
    @NotBlank(message = "請輸入角色名稱")
    private String roleCode;
 
    private String desc;
}

2.創(chuàng)建全局異常處理器,對message信息進(jìn)行處理,并返回給前端

@Component
@Slf4j
public class GlobalValidHandler implements HandlerExceptionResolver {
 
    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        ModelAndView modelAndView = new ModelAndView(new MappingJackson2JsonView());
        String errorMsg;
        if (ex instanceof BindException) {
        //對于驗(yàn)證注解在實(shí)體類的屬性中的異常處理
            BindException bex = (BindException) ex;
            errorMsg = Objects.requireNonNull(bex.getBindingResult().getFieldError()).getDefaultMessage();
        } else if (ex instanceof ConstraintViolationException) {
        //對于驗(yàn)證注解直接在方法參數(shù)中使用的異常處理
            ConstraintViolationException cve = (ConstraintViolationException) ex;
            errorMsg = cve.getMessage();
            if (errorMsg != null) {
                errorMsg = errorMsg.substring(errorMsg.indexOf(": ") + 2);
            }
        } else {
        //其他
            errorMsg = ex.getMessage();
        }
        modelAndView.addObject("msg", errorMsg);
        modelAndView.addObject("code", HttpServletResponse.SC_BAD_REQUEST);
        return modelAndView;
    }
}

3.在controller中的使用

@RestController
@RequestMapping("/user")
public class UserController{
 
    @Autowired
    private UserService userService;
 
    @PostMapping("/add")
    public ApiResult addUser(@Valid @RequsetBody UserDto userDto){
        return ApiResult.data(userService.addUser(userDto));
    }
}

三.在方法參數(shù)中使用驗(yàn)證注解,與@RequsetParam注解同時使用,注意類上使用@Validated

@Validated
@RestController
@RequestMapping("/user")
public class UserController{
 
 @Autowired
 private UserSerivce userService;
 
 @GetMapping("/list")
 public ApiResult queryUsers(@RequestParam(name="userName", required = false, defaultValue = "")
                 @NotBlank(message = "請輸入用戶") String userName,
                 @RequestParam(name="pageNumber", required = false, defaultValue = 1) Integre pageNumber,
                 @RequestParam(name="pageSize", required = false, defaultValue = 10) Integre pageSize){
    return ApiResult.Data(userService.queryUsers(userName,pageNumber,pageSize));
 }
}

ps: 需要在全局變量中對驗(yàn)證注解進(jìn)行異常處理 GlobalValidHandler

四.自定義驗(yàn)證注解

1.定義驗(yàn)證注解

@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = MyConstraintValidtor.class)
public @interface MyValidator {
 
    String message() default "校驗(yàn)未通過";
 
    Class<?>[] groups() default {};
 
    Class<? extends Payload>[] payload() default {};
}

2.實(shí)現(xiàn)驗(yàn)證注解的具體驗(yàn)證邏輯

public class MyConstraintValidator  implements ConstraintValidator<MyValidator, Object> {
    @Override
    public void initialize(MyValidator validator) {
        ConstraintValidator.super.initialize(validator);
    }
 
    @Override
    public boolean isValid(Object value, ConstraintValidatorContext context) {
        //具體校驗(yàn)邏輯
        //........
        //........
 
        //舉個例 驗(yàn)證不為空
        return !ObjectUtils.isEmpty(value);
    }
}

3.使用

@Data
public class UserDto{
 
    @NotNull(message="用戶名不能為空")
    private String userName;
 
    @MyValidator(message="密碼不能為空")
    private String password;
}

到此這篇關(guān)于詳解SpringBoot中@NotNull,@NotBlank注解使用的文章就介紹到這了,更多相關(guān)SpringBoot注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Spring Validation實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)的代碼詳解

    使用Spring Validation實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)的代碼詳解

    在現(xiàn)代Web應(yīng)用開發(fā)中,數(shù)據(jù)校驗(yàn)是不可忽視的重要環(huán)節(jié),Spring提供了強(qiáng)大的數(shù)據(jù)校驗(yàn)框架——Spring Validation,可以有效提升數(shù)據(jù)輸入的安全性與應(yīng)用的穩(wěn)定性,本文將介紹如何使用Spring Validation進(jìn)行數(shù)據(jù)校驗(yàn),幫助您深入理解和靈活應(yīng)用這一技術(shù)
    2024-11-11
  • Java動態(tài)代理簡單介紹

    Java動態(tài)代理簡單介紹

    動態(tài)代理指的是,代理類和目標(biāo)類的關(guān)系在程序運(yùn)行的時候確定的,客戶通過代理類來調(diào)用目標(biāo)對象的方法,是在程序運(yùn)行時根據(jù)需要動態(tài)的創(chuàng)建目標(biāo)類的代理對象。本文將通過案例詳細(xì)講解一下Java動態(tài)代理的原理及實(shí)現(xiàn),需要的可以參考一下
    2022-08-08
  • SpringBoot中Mybatis + Druid 數(shù)據(jù)訪問的詳細(xì)過程

    SpringBoot中Mybatis + Druid 數(shù)據(jù)訪問的詳細(xì)過程

    Spring Boot 底層都是采用 SpringData 的方式進(jìn)行統(tǒng)一處理各種數(shù)據(jù)庫,SpringData也是Spring中與SpringBoot、SpringCloud 等齊名的知名項(xiàng)目,下面看下SpringBoot Mybatis Druid數(shù)據(jù)訪問的詳細(xì)過程,感興趣的朋友一起看看吧
    2021-11-11
  • Java線程變量ThreadLocal詳細(xì)解讀

    Java線程變量ThreadLocal詳細(xì)解讀

    這篇文章主要介紹了Java線程變量ThreadLocal詳細(xì)解讀,多線程訪問同一個變量的時候,很容易出現(xiàn)問題,特別是多線程對一個共享變量進(jìn)行寫入的時候,為了線程的安全在進(jìn)行數(shù)據(jù)寫入時候會進(jìn)行數(shù)據(jù)的同步,需要的朋友可以參考下
    2024-01-01
  • 老生常談Java中List與ArrayList的區(qū)別

    老生常談Java中List與ArrayList的區(qū)別

    大家都知道List是接口,ArrayList是List接口的一個實(shí)現(xiàn)類,接下來通過本文給大家介紹Java中List與ArrayList的區(qū)別,需要的朋友可以參考下
    2022-08-08
  • Spring Cloud Alibaba Nacos 入門詳解

    Spring Cloud Alibaba Nacos 入門詳解

    這篇文章主要介紹了Spring Cloud Alibaba Nacos入門詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • Javaweb會話跟蹤技術(shù)Cookie和Session的具體使用

    Javaweb會話跟蹤技術(shù)Cookie和Session的具體使用

    本文主要介紹了Javaweb會話跟蹤技術(shù)Cookie&Session的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • JAVA實(shí)現(xiàn)JSON后端向前端傳遞數(shù)據(jù)

    JAVA實(shí)現(xiàn)JSON后端向前端傳遞數(shù)據(jù)

    本篇文章主要介紹了JAVA實(shí)現(xiàn)JSON后端向前端傳遞數(shù)據(jù),這里整理了詳細(xì)的代碼,具有一定的參考價值,有需要的小伙伴可以參考下。
    2017-03-03
  • RestTemplate的URL請求示例

    RestTemplate的URL請求示例

    這篇文章主要為大家介紹了RestTemplate的URL請求示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • springboot+springmvc+mybatis項(xiàng)目整合

    springboot+springmvc+mybatis項(xiàng)目整合

    這篇文章主要為大家詳細(xì)介紹了springboot+springmvc+mybatis項(xiàng)目的整合,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04

最新評論

汨罗市| 厦门市| 南平市| 屏东县| 西畴县| 闻喜县| 阜阳市| 泰宁县| 海口市| 沁水县| 灯塔市| 鸡东县| 方正县| 龙游县| 吉安县| 洛阳市| 诸城市| 永康市| 苏尼特左旗| 商城县| 湘潭市| 山东省| 卓资县| 肃北| 太和县| 青田县| 澜沧| 安国市| 聂拉木县| 湟源县| 临泽县| 娱乐| 盐边县| 桦甸市| 乡城县| 阿拉善左旗| 交城县| 通海县| 青州市| 洛南县| 萨嘎县|