论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
数据库
›
SqlServer
›
SpringBoot中的WebMvcConfigurationSupport和WebMvcConf ...
SpringBoot中的WebMvcConfigurationSupport和WebMvcConfigurer
水军大提督
金牌会员
|
2024-6-9 13:28:55
|
显示全部楼层
|
阅读模式
楼主
主题
652
|
帖子
652
|
积分
1956
在SpringBoot中可以通过以下两种方式来完成自界说WebMvc的设置:
(1)继承WebMvcConfigurationSupport类
(2)实现WebMvcConfigurer接口
通过这两种方式完成的WebMvc设置存在差别,本文将对此作简单阐明与区分。
一.继承WebMvcConfigurationSupport类
1.WebMvcConfigurationSupport是一个用于实现自界说WebMvc设置的类,里面提供了如添加自界说拦截器、消息转换器等方法,
同时对于部门方法具有默认实现。
2.WebMvcConfigurationSupport中很多方法都被打上@Bean注解,这代表这些方法提供的对象将会交给IOC容器管理。但是WebMvcConfigurationSupport这个类却并未被打上@Configuration注解
因此
在利用继承WebMvcConfigurationSupport的方式来完成自界说WebMvc设置时,需要手动给打上@Configuration注解
,如许WebMvcConfigurationSupport中的@Bean方法才能见效。
3. SpringBoot对SpringMvc已经做了自动设置。默认环境下,SpringBoot会利用本身的WebMvc设置类WebMvcAutoConfiguration,而该类实现自动设置的关键在于其内部类EnableWebMvcConfiguration
可以看到作为WebMvcAutoConfiguration内部类的EnableWebMvcConfiguration又是DelegatingWebMvcConfiguration这个类的子类,那么我们再到DelegatingWebMvcConfiguration这个类内部看一下
可以看到DelegatingWebMvcConfiguration继承了WebMvcConfigurationSupport。
在Spring框架中,我们可以通过继承WebMvcConfigurationSupport类的方式来实现自界说WebMvc设置,而SpringBoot底层正是通过这种方式来完本钱身的WebMvc设置。
也就是说我们在SpringBoot中,实际上已经在利用SpringBoot为我们提供的,不同于Spring框架默认设置的WebMvc设置。
4.假如本身利用继承
WebMvcConfigurationSupport的方式来实现自界说WebMvc设置,则会覆盖SpringBoot提供的WebMvc设置。
(1)我们在SpringBoot的WebMvc设置类WebMvcAutoConfiguration类上可以看到这一行注解:@ConditionalOnMissingBean({WebMvcConfigurationSupport.class})
该注解的意思是:在SpringBoot实现自动装配时,假如IOC容器中不存在类型为WebMvcConfigurationSupport的bean,才会将这个WebMvcAutoConfiguration实例化。
(2)而假如我们利用继承WebMvcConfigurationSupport类的方式来实现自界说WebMvc设置,则在自动装配时,将导致WebMvcAutoConfiguration无法实例化,其内部初始化设置将全部无法实例化,
也就是说SpringBoot提供的WebMvc设置失效;取而代之的,我们本身实现的WebMvcAutoConfiguration类将作为全部WebMvc设置的源头。
(3)假如我们采用这种方式实现WebMvc设置,且在子类中只重写本身需要拓展的功能方法,则其他方法将采用WebMvcConfigurationSupport的默认方法,其默认方法有的是空方法,而有的给了默认实现。但需要注意的是,WebMvcConfigurationSupport那些给了默认实现的方法,与SpringBoot的WebMvc设置类WebMvcAutoConfiguration本身实现的方法是不一样的。
我们假如继承WebMvcConfigurationSupport,而不重写其方法,那么我们就是在利用Spring提供的WebMvc设置,而不是SpringBoot提供的WebMvc设置。
(4)因此,利用继承WebMvcConfigurationSupport类实现自界说WebMvc设置这种方式的缺点是显而易见的——
我们将为了拓展部门WebMvc设置,而抛弃全部SpringBoot已经为我们实现的便捷的WebMvc设置。
二.实现WebMvcConfigurer接口
1.WebMvcConfigurer是一个用于实现自界说WebMvc设置的接口,里面同样提供了如添加自界说拦截器、消息转换器等方法,且
都是默以为空实现的方法。
2.
利用实现WebMvcConfigurer接口的方式来实现自界说WebMvc设置,并不会覆盖SpringBoot本身实现的设置。
(1)上文提到,只有在IOC中已经有类型为WebMvcConfigurationSupport的bean的时间,SpringBoot的WebMvc设置类WebMvcAutoConfiguration才不会见效。
(2)
而假如我们利用实现WebMvcConfigure接口r的方式自界说WebMvc设置,则WebMvcAutoConfiguration可以被实例化,SpringBoot本身设置的WebMvc乐成见效。
(3)而假如在实现WebMvcConfigurer接口时,我们本身实现的方法在SpringBoot的WebMvcAutoConfiguration中也被实现了,则会归并而不是覆盖。这阐明了实现WebMvcConfigurer接口是一种增量式的设置方式:
当我们实现WebMvcConfigurer接口并重写其中的某个方法时,实际上是在提供额外的设置或定制逻辑,这些设置或逻辑将与SpringBoot的默认设置归并。SpringBoot会先加载其默认的自动设置,然后应用你在WebMvcConfigurer中界说的自界说设置。
3.继承WebMvcConfigurationSupport与实现WebMvcConfigurer是不同的设置逻辑
(1)继承WebMvcConfigurationSupport类是抛弃所有SpringBoot提供的WebMvc设置,全部由本身实现。
(2)实现WebMvcConfigurer接口是在保存SpringBoot提供的WebMvc设置的基础上,添加本身要拓展的设置。
(3)因此,实际开辟中更保举利用实现WebMvcConfigurer接口的方式来完成自界说WebMvc设置。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
水军大提督
金牌会员
这个人很懒什么都没写!
楼主热帖
MySQL高可用架构搭建实战
让软件飞——“X+”技术揭秘 ...
使用 OpenTelemetry 和 Loki 实现高效 ...
哈希算法-SHA-256-过程详解
DQL语句(一) -----简单select查询 ...
可观测性和传统监控的三大区别 ...
TP 判断IP是否在国内
camunda工作流实战项目(表单设计器+流 ...
SQL99相较于SQL92在多表查询时的新语法 ...
Docker(11)-- DockerFile详解
标签云
挺好的
服务器
快速回复
返回顶部
返回列表