WebMvcAutoConfiguration类上有个注解,叫ConditionalOnMissingBean,这导致有时候该配置类与接口WebMvcConfigurer行为不一样

比如:ConditionalOnMissingBean(A.class),则表示假如容器中有A了,就不再加载A类型以及A类型的子类

也就是说,假如有两个配置类,都继承了A,那么这两个配置类,只有一个会生效,另外一个不生效,而恰好,WebMvcAutoConfiguration上有个ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
所以我们自己定义的配置类,不应该都extends WebMvcConfigurationSupport抽象类,而是应该implements WebMvcConfigurer接口

结论:配置类尽量implements WebMvcConfigurer,而不应该extends WebMvcConfigurationSupport

但是还有个问题,就是spring boot额外提供了WebMvcRegistrationsAdapter类,使用该类也可以实现自定义的一些spring组件功能,需要注意的是WebMvcRegistrationsAdapter与WebMvcConfigurer的区别,WebMvcRegistrationsAdapter是当你需要自定义spring mvc九个组件中的前三个的时候,需要使用WebMvcRegistrationsAdapter,而我们在WebMvcConfigurer中自定义的组件,准确的说那不是spring mvc中的九个组件之一,而是一些小的配置,九组件中某一个组件的配置,这点一定要区分清楚,否则你会记得很混乱

WebMvcConfigurer
该接口用来我们自定义9大组件中的一些小组件,我直接使用一个实现类来实现每个方法

示例1:为每个RequestMapping加前缀

public void configurePathMatch(PathMatchConfigurer configurer) {// 等同于在每个ServletPath前都加上edg,如果原来访问的路径是// localhost:8080/login/check// 则加上如下代码之后访问的地址是// localhost:8080/edg/login/checkconfigurer.addPathPrefix("edg", c->true);// 上面的c是具体的某个Controller,下面有示例
}

示例2:为指定的Controller中每个RequestMapping加前缀

public void configurePathMatch(PathMatchConfigurer configurer) {configurer.addPathPrefix("edg", c->c==MyController.class);
}

未完

SpringBoot-WebMvcAutoConfiguration/WebMvcConfigurer/WebMvcRegistrationsAdapter相关推荐

  1. SpringBoot 使用WebMvcConfigurer处理请求

    1. 简介 WebMvcConfigurer配置类其实是Spring内部的一种配置方式,采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制. 基于java-based方式的 ...

  2. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

  3. 十一、springboot WebMvcConfigurer与HandlerInterceptorAdapter使用

    springboot WebMvcConfigurer与HandlerInterceptorAdapter使用 简介 WebMvcConfigurer:拦截器的注册类 HandlerIntercept ...

  4. SpringBoot中通过重写WebMvcConfigurer的方法配置静态资源映射实现图片上传后返回网络Url

    场景 前端调用上传照片的功能,将某照片上传到服务器上某磁盘路径下,然后将通过静态资源映射,将在服务器上 访问的地址存储到数据库中,这样在需要获取这种照片的时候就能通过服务器上的url来获取和显示这张照 ...

  5. SpringBoot中通过重写WebMvcConfigurer的addCorsMapping方法实现后台服务解决跨域问题

    场景 之所以会跨域,是因为受到了同源策略的限制,同源策略要求源相同才能正常进行通信,即协议.域名.端口号都完全一致. 浏览器出于安全的考虑,使用 XMLHttpRequest对象发起 HTTP请求时必 ...

  6. springboot自定义静态资源代理WebMvcConfigurerAdapter详解和过期后的替代方案WebMvcConfigurer

    最常用的跨域和静态资源代理 import org.springframework.context.annotation.Configuration; import org.springframewor ...

  7. SpringBoot的Web开发入门案例7—WebMvcConfigurer配置类

    SpringBoot的Web开发入门案例7-WebMvcConfigurer配置类 WebMvcConfigurer接口的几个常用方法: addViewControllers:配置请求路径和页面的映射 ...

  8. springboot源码解析autoconfigure之WebMvcAutoConfiguration

    2019独角兽企业重金招聘Python工程师标准>>> 说在前面 本次开始spring-boot-autoconfigure源码解析之WebMvcAutoConfiguration ...

  9. springboot的WebMvcConfigurerAdapter学习(现在常用实现webmvcConfigurer接口和继承WebMvcConfigurationSupport类)

    1.定义 是Spring内部的一种配置方式 采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制 2.使用 /** 解决跨域问题 **/ public void addCor ...

最新文章

  1. 如何做一个听话的 “输入框”
  2. java为窗体添加滚动条
  3. Linux 磁盘管理 二(Raid、LVM、Quota)
  4. 使用Java Stream API将List按自定义分组规则转换成Map的一个例子
  5. python 列表 字典 读写文件:pickle模块的基本使用
  6. 288. Unique Word Abbreviation
  7. Spring 实战-第一章-基本概念
  8. 工作没满一年,我跳槽了!【附面经】
  9. python之路_django分页及session介绍
  10. day12 装饰器的进阶
  11. 从备用类型总盗用steal page
  12. 信息论Matlab仿真——信源熵
  13. 走向全民开发,低代码重塑企业数字化生产力 | 爱分析报告
  14. Java API连接Kerberos认证的HBASE
  15. 【Skill】解决 QQ 邮箱无法更改发信人名称问题
  16. 技巧分享-如何给电脑“重装”系统(win10)
  17. vbs在excel中打开html文件,从命令行使用VBScript从Excel外部运行Excel宏
  18. 第十二篇:适配器模式 : 农村小伙娶乌克兰美女语言不通 翻译软件立功
  19. 人民币,大写中文与数字之间转换
  20. Android课程设计之视频播放器

热门文章

  1. Python的第三方库xlwt
  2. Spring Security中remember me
  3. oracle控制文件还原,Oracle的控制文件的恢复与重建
  4. C:/WINDOWS/system32/drivers/etc/hosts文件无法访问
  5. Oracle listener
  6. vscode ---- 插件
  7. linux java.policy_Linux部署Java环境
  8. MYSQL主从同步(Windows到Windows)
  9. KVM 管理与使用说明
  10. 部署 SaltStack 自动化运维工具,并简易批量安装 httpd 服务