天天看點

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

即可解決問題。