zoukankan      html  css  js  c++  java
  • SpringBoot中在除Controller层 使用Validation的方式

    说明:Validation 在Controller层使用Validation应该都使用过了,以下方式可以使用 Validation 在Service层完成对dto的属性校验,避免写一堆的 if else 来处理这些逻辑,提高开发效率,代码如下:

    1:DTO实体类代

    @Data
    public class AddUserParamsDto implements Serializable {
    
        private Integer id;
    
        @NotEmpty(message = "用户名不能为空")
        private String username;
    
        @Length(min = 6, message = "密码长度不能小于6")
        private String password;
    
        @Max(value = 120, message = "年龄必须在18-120之间")
        @Min(value = 18, message = "年龄必须在18-120之间")
        private Integer age;
    
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date birthday;
    
        private String description;
    }
    

    2:可以将ValidatorFactory的创建放入配置类里,后期如果使用 Validation 可以直接使用Spring的IOC进行注入,实现代码重用性。

    @Configuration
    public class ValidatorConfigBean {
    
        @Bean
        public ValidatorFactory validatorFactory() {
            return Validation.byProvider(HibernateValidator.class)
                    .configure()
                    .failFast(false)
                    .buildValidatorFactory();
        }
    
        @Bean
        public Validator validator(ValidatorFactory validatorFactory) {
            return validatorFactory.getValidator();
        }
    }
    

    3:Controller层测试接口

    @RestController
    public class UserController {
    
        @Resource
        private UserService userService;
    
        @GetMapping("/test/valid")
        public Object validToService() {
            AddUserParamsDto dto = new AddUserParamsDto();
            dto.setUsername(null);
            dto.setAge(200);
            dto.setPassword("123");
            return userService.validToService(dto);
        }
    
    }
    

    4:Service层代码,可以注入ValidatorFactory手动创建Validator对象,也可直接注入Validator对象

    @Service
    public class UserServiceImpl implements UserService {
    
        @Resource
        private Validator validator;
    
        @Override
        public Object validToService(AddUserParamsDto dto) {
            List<String> list = new ArrayList<>();
            Set<ConstraintViolation<AddUserParamsDto>> violations = validator.validate(dto);
            for (ConstraintViolation<AddUserParamsDto> violation : violations) {
                list.add(violation.getMessage());
            }
            return list;
        }
    }
    
  • 相关阅读:
    晃动提示效果
    弹出框(dialog)制作
    日期选择组件
    背景图合并
    css小常识
    学习总结
    新学习的开始
    河马搞笑GIF动态图网站(http://gif.hemaj.com)上线,老司机快上车!
    新项目上线,河马体育(http://www.hemaj.com)-足球即时比分、足球比分、足球比分直播、足球直播
    正规表达
  • 原文地址:https://www.cnblogs.com/gxc6/p/11407599.html
Copyright © 2011-2022 走看看