【发布时间】:2020-06-11 21:17:51
【问题描述】:
我在使用 @PostMaping, @PutMapping 注释的 REST 调用上对 DTO 使用 javax + Hibernate 验证。它确实工作得很好,但是我也有一个地方,我将 2 个对象合并到一个 DTO 中,然后我将它传递给“管理器”层,我很想给参数打上@Valid 注释,我是期待它能够工作,但不幸的是,验证没有启动。
有办法强制吗?
======================更新=====================
我的班级确实在顶部有@Validated 注释。
验证参数的方法是public。
我配置了以下 bean:
@Bean
public static LocalValidatorFactoryBean defaultValidator() {
LocalValidatorFactoryBean factoryBean = new LocalValidatorFactoryBean();
MessageInterpolatorFactory interpolatorFactory = new MessageInterpolatorFactory();
factoryBean.setMessageInterpolator(interpolatorFactory.getObject());
return factoryBean;
}
@Bean
public static MethodValidationPostProcessor methodValidationPostProcessor(Environment environment, Validator validator) {
MethodValidationPostProcessor processor = new MethodValidationPostProcessor();
boolean proxyTargetClass = (Boolean)environment.getProperty("spring.aop.proxy-target-class", Boolean.class, true);
processor.setProxyTargetClass(proxyTargetClass);
processor.setValidator(validator);
return processor;
}
【问题讨论】:
-
一种方法是使用内置验证器验证 Dto。
标签: spring-boot hibernate-validator