expected single matching bean but found 3: requestMappingHandlerMapping。。。(已解决)

痛定思痛。 2023-10-06 00:19 104阅读 0赞

问题原因:

因为我有三个大模块,每个模块要重写MVC配置,要配置静态资源以及模板引擎,另一个模块要注入插件配置,都要重新配置jsonconfig,然后稀里糊涂的一顿操作就这样了。

配置MVC

  1. public class WebMvcAutoConfiguration extends WebMvcConfigurationSupport {
  2. .....
  3. }
  4. 配置fastJson 用于替代jackson
  5. @SpringBootApplication
  6. public class JsonParseConfig extends WebMvcConfigurationSupport {
  7. public void configureMessageConverters(List<HttpMessageConverter<?>> converters){
  8. .......
  9. }
  10. }

我在其它代码中这样使用:

  1. @Autowired
  2. WebApplicationContext applicationContext;
  3. @Override
  4. public Object getAllURL() {
  5. List<Map<String, String>> resultList = new ArrayList<>();
  6. RequestMappingHandlerMapping requestMappingHandlerMapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
  7. // 获取url与类和方法的对应信息
  8. Map<RequestMappingInfo, HandlerMethod> map = requestMappingHandlerMapping.getHandlerMethods();
  9. }

然后就出现了expected single matching bean but found 3: requestMappingHandlerMapping的报错,

我把this.requestMappingHandlerMapping = applicationContext.getBean(RequestMappingHandlerMapping.class);屏蔽了就正常,说明从这之前就已经存在三个RequestMappingHandlerMapping对象了.。

解决办法

当我把配置fastJson 配置继承的类改成接口WebMvcConfigurer就神特么好使了,原因未知,毕竟是技术小白。

  1. /**
  2. * 配置fastJson 用于替代jackson
  3. */
  4. public void configureMessageConverters(List<HttpMessageConverter<?>> converters){
  5. }

发表评论

表情:
评论列表 (有 0 条评论,104人围观)

还没有评论,来说两句吧...

相关阅读