本文介绍了我可以在Spring Boot自定义验证器中自动连线一个存储库吗的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用Spring Boot创建了一个自定义验证器:
I Create one Custom Validator with 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){
...
}
}
所以在我的验证器中
@Autowired
IQualificacao iQualificacao;
不起作用,如果我将此存储库放在控制器中,则可以正常工作
don`t work, if I put this repository in my controller, works fine
---------------------解决方案(@sanluck的tks)----------
---------------------SOLUTION (tks for @sanluck)----------
我的验证者:
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;
}
}
并在我的控制器中:
@RestController
@RequestMapping("/ri")
public class RIController {
@Autowired
IQualificacao iQualificacao;
@InitBinder("aberturaMatricula")
protected void initAberturaMatriculaBinder(WebDataBinder binder) {
binder.addValidators(new AberturaMatriculaValidator(iQualificacao));
}
...
}
推荐答案
向您的应用程序添加 @Configuration
,以注册您的 AberturaMatriculaValidator
:
Add @Configuration
to your application for registering your AberturaMatriculaValidator
:
@Configuration
public class ValidationConfig {
@Autowired
IQualificacao iQualificacao;
@Bean
public AberturaMatriculaValidator aberturaMatriculaValidator() {
return new AberturaMatriculaValidator(iQualificacao);
}
}
还必须创建构造函数 AberturaMatriculaValidator(IQualificacao iqualificao)
.
这篇关于我可以在Spring Boot自定义验证器中自动连线一个存储库吗的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!