[英]Can I Autowired one Repository inside Spring boot custom validator
I Create one Custom Validator with Spring Boot:我使用 Spring Boot 创建了一个自定义验证器:
public class AberturaMatriculaValidator implements Validator {
@Autowired
IQualificacao iQualificacao;
@Override
public boolean supports(Class<?> clazz) {
return AberturaMatricula.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {//TODO Necessita Validações mais complexas, como verificar se o valor existe em uma determinada lista e tal.
AberturaMatricula obj = (AberturaMatricula) target;
List<TbQualificacao> qualificacaoList = iQualificacao.findByNatureza("IMOVEIS");
System.out.println(qualificacaoList.size());
}
}
and add he in my Controller:并将他添加到我的控制器中:
@RestController
@RequestMapping("/ri")
public class RIController {
@InitBinder("aberturaMatricula")
protected void initAberturaMatriculaBinder(WebDataBinder binder) {
binder.addValidators(new AberturaMatriculaValidator());
}
@RequestMapping(value = "/selo/abertura/", method = RequestMethod.POST)
public AberturaMatricula selarAbertura(@RequestBody @Valid AberturaMatricula aberturaMatricula){
...
}
}
So inside my validator the所以在我的验证器中
@Autowired
IQualificacao iQualificacao;
don`t work, if I put this repository in my controller, works fine不工作,如果我把这个存储库放在我的控制器中,工作正常
---------------------SOLUTION (tks for @sanluck)---------- ---------------------解决方案(@sanluck 的 tks)---------
My validator:我的验证器:
public class AberturaMatriculaValidator implements Validator {
private IQualificacao iQualificacao;
public AberturaMatriculaValidator(IQualificacao iQualificacao) {
this.iQualificacao = iQualificacao;
}
@Override
public boolean supports(Class<?> clazz) {
return AberturaMatricula.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {//TODO Necessita Validações mais complexas, como verificar se o valor existe em uma determinada lista e tal.
AberturaMatricula obj = (AberturaMatricula) target;
}
}
and in my controller:在我的控制器中:
@RestController
@RequestMapping("/ri")
public class RIController {
@Autowired
IQualificacao iQualificacao;
@InitBinder("aberturaMatricula")
protected void initAberturaMatriculaBinder(WebDataBinder binder) {
binder.addValidators(new AberturaMatriculaValidator(iQualificacao));
}
...
}
Add @Configuration
to your application for registering your AberturaMatriculaValidator
:将
@Configuration
添加到您的应用程序以注册您的AberturaMatriculaValidator
:
@Configuration
public class ValidationConfig {
@Autowired
IQualificacao iQualificacao;
@Bean
public AberturaMatriculaValidator aberturaMatriculaValidator() {
return new AberturaMatriculaValidator(iQualificacao);
}
}
Also you must create constructor AberturaMatriculaValidator(IQualificacao iqualificao)
.您还必须创建构造函数
AberturaMatriculaValidator(IQualificacao iqualificao)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.