这是我的问题:
我开发了一个基于spring-boot的web应用程序,除了这个界面" javax.validation.Validator"之外,spring的自动注释都在每个层中工作。
当我试图自动装配" javax.validation.Validator"在我的验证器中这样:
@Component
public class BrandValidator{
@Autowired
private javax.validation.Validator validator;
我遇到了这个异常:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖项找到[javax.validation.Validator]类型的限定bean
首先,我认为在Spring上下文中没有bean可用于此类,但实际上当我在运行时列出可用的bean时(在我的验证器上注释Autowired注释之后),我看到这个bean可用:< / p>
&#34; mvcValidator&#34;使用以下类型OptionalValidatorFactoryBean(此类扩展LocalValidatorFactoryBean和LocalValidatorFactoryBean实现javax.validation.Validator和org.springframework.validation.Validator,您可以在此处看到http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html)
我尝试添加@Qualifier(value =&#34; mvcValidator&#34;)注释,但我得到了相同的异常。
奇怪的是,我能够自动使用#34; spring&#34;验证器(org.springframework.validation.Validator)类非常好:
@Autowired
private org.springframework.validation.Validator validatorSpring;
我在调试模式中看到上下文中存在的OptionalValidatorFactoryBean被注入。
最后,如果我在javax.validation.Validator之前就像这样自动装配org.springframework.validation.Validator:
@Component
public class BrandValidator{
//workaround
@Autowired
private org.springframework.validation.Validator validatorSpring;
@Autowired
private javax.validation.Validator validator;
现在正确注入了javax.validation.Validator(在调试模式下,我看到两个验证器都是同一个对象OptionalValidatorFactoryBean)。我真的不明白上下文加载后会发生什么,我真的不喜欢这种解决方法(我不需要org.springframework.validation.Validator在我班上)。
知道如何使用spring boot正确注入javax.validation.Validator?
答案 0 :(得分:1)
尝试在BrandValidator类上添加@DependsOn(value="mvcValidator")
。