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;
        }
    }
    
  • 相关阅读:
    webservice的cxf的客户端
    webservice用cxf发布SOAP
    webservice声明发布SOAP1.2
    webservice使用注解修改WSDL内容
    webservice获取天气信息
    结巴分词原理介绍
    Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)
    【Pandas】Pandas求某列字符串的长度,总结经验教训
    UTF-8与UTF-8 BOM
    logging.basicConfig函数
  • 原文地址:https://www.cnblogs.com/gxc6/p/11407599.html
Copyright © 2011-2022 走看看