今天工作中遇到了一个问题,在接口请求时出现了
org.springframework.beans.factory.NoUniqueBeanDefinitionException
的运行时异常,其描述为No qualifying bean of type 'javax.validation.Validator' available: expected single matching bean but found 2: getValidator,mvcValidator
,大致意思就是说没有符合条件的Validator
bean,为什么没有符合的条件呢,因为在匹配 bean 的时候,spring匹配到了两个。
因为同事来问,我一开始也是纳闷为什么会有两个,首先可以确定的是,配置文件中有配置过一个 LocalValidatorFactoryBean
,而这个肯定不能去掉,因为配置它的目的是为了通用的 message。一开始用了一个相对邪道的方法,就是不管你多出了几个 Validator
,我就是只要我配置的这一个,那么,其实只需要加上 @Primary
注解即可
但这并没有本质性的解决问题,后来注意到在 Swagger配置类里被加了一个没有实际意义的 @EnableWebMvc
的注解,这个注解的其中一个功能就是会默认配置一个 OptionalValidatorFactoryBean
,而这个就是导致此次问题的主要原因,去掉即可。
以上就是本篇文章的全部内容,希望可以帮助到看文章的你!