【发布时间】:2020-11-10 21:01:51
【问题描述】:
问题是这样的: 使用 Spring Boot,我有一个休眠实体(消息),我想为它创建一个自定义验证器。
import org.springframework.validation.Validator;
@Component
public class MessageValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return Message.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors) {
... Do work here ...
}
}
那么,我有一个服务
@Service
public class MessagesService {
@Autowired
Validator validator;
public void doSomething(Message m) {
Errors e = new BeanPropertyBindingResult(new Object(), "dummy");
this.validator.validate(m, e);
}
}
问题在于调用 this.validator.validate(m, e);永远不会进入我的实现。
我的 pom.xml 有(以及其他):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
那么,我是否在这里遗漏了一些明显的东西?如果我命名验证器组件并且我限定了服务中的引用,那么一切都很好。但我希望 Spring 接线能够为我要求的对象类型提供适当的验证器。还是这个期望太高了?
【问题讨论】:
标签: java spring validation spring-validator