简体   繁体   English

我可以在 Spring boot 自定义验证器中自动连接一个存储库吗

[英]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.

相关问题 Spring 引导:存储库不会在自定义验证器中自动装配 - Spring Boot: repository does not autowire in the custom validator 在 Spring Boot 存储库中使用自动装配 bean 的自定义删除方法 - custom delete method using autowired bean in spring boot repository 我可以在 Spring Boot 中从服务中显式调用自定义验证器吗? - Can I explicitly call custom validator from service in Spring Boot? Autowired Repository在自定义约束验证器中为空 - Autowired Repository is Null in Custom Constraint Validator Spring 引导 - 约束验证器 @Autowired 字段 null - Spring Boot - Constraint Validator @Autowired field null Spring Boot @Autowired Jpa存储库返回Null - Spring Boot @Autowired Jpa repository returns Null Spring引导Autowired Service和Repository抛出nullpointerexception - Spring boot Autowired Service and Repository throwing nullpointerexception Spring Boot Autowired Mongo存储库不起作用 - Spring boot Autowired Mongo Repository not working 如何在 Spring Boot 中实现通用 JPA 存储库 - 它可以自动装配到任何实体/类类型的 spring 服务中 - How to implement Generic JPA Repository in Spring Boot - Which can be autowired into spring services for any entity/class type 在Spring引导测试中,如何创建一个bean并通过@Autowired注入? - In a Spring boot test, how can I create a bean and injects by @Autowired?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM