天天看点

expected single matching bean but found 2

SSM开发,使用springMVC框架中自带的spring验证框架来验证数据,编写了一个org.springframework.validation.Validator接口的验证器类SignUpValidator来对领域数据进行验证时,报了以下错误:

“org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘userController’: Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type ‘org.springframework.validation.Validator’ available: expected single matching bean but found 2: signUpValidator,org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0”

“org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type ‘org.springframework.validation.Validator’ available: expected single matching bean but found 2: signUpValidator,org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0”

看样子是系统不知道引用那个类的意思。

从网上搜索了相关资料,许多人是因为写了两个同名实现类才出现的,而本人只需要使用前者signUpValidator用作验证,后者org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0本人并不知道是拿来的类。

validator类:

expected single matching bean but found 2

controller:

expected single matching bean but found 2

网上百科无意中看到一个倒赞很多的回答:

expected single matching bean but found 2

既然不知道重名在哪里,也不知道另一个validator是啥,那就指定名称注入吧。按spring的定义说,“@Resource注解有两个属性——name和type。Name属性指定Bean实例名称,即按照名称来装配注入;type属性指定Bean类型,即按照Bean的类型进行装配。”

Controller内:

expected single matching bean but found 2

Validator内:

expected single matching bean but found 2

即可解决问题。