我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SpringMvc定制化深入探究原理

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SpringMvc定制化深入探究原理

一、SpringBoot 自动配置套路

引入场景 starter —— xxxxAutoConfiguration —— 导入 xxxx组件 —— 绑定 xxxxProperties —— 绑定配置文件项

因此,需要修改时只需要修改配置文件项

二、定制化常见方式

使用 @Bean + 编写自定义配置类 ,增加或替换容器中的一些组件 (常用)

修改配置文件

使用定制化器 —— xxxxCustomizer

编写配置类, 实现 WebMvcConfigurer 接口,定制化 web 功能 (常用)

@EnableWebMvc + 实现 WebMvcConfigurer 接口 ,全面接管 SpringMvc,所有 SpringBoot 默认规则失效 (慎用)

@EnableWebMvc 原理

  • WebMvcAutoConfiguration 中有全部 SpringMvc 默认自动配置功能类(静态资源、欢迎页…)
  • 一旦使用 @EnableWebMvc ,其是一复合注释,导入 DelegatingWebMvcConfiguration 类
@Import({<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->DelegatingWebMvcConfiguration.class})

DelegatingWebMvcConfiguration.class 只保证 SpringMvc 最底层的使用,其作用如下

(1)把系统中的所有 WebMvcConfigurer 拿过来,无论有多少 Configurer 都是这些 Configurer 合起来一起生效

(2)@EnableWebMvc 自动配置了一些最底层的组件(RequestMappingHandlerMapping …),这些组件依赖的组件都是从容器中获取

WebMvcAutoConfiguration 生效的条件为容器中没有 WebMvcConfigurationSupport.class这个组件(这个组件在DelegatingWebMvcConfiguration 中,DelegatingWebMvcConfiguration 在 EnableWebMvc 中)

@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)

因此,使用 @EnableWebMvc 后,所有的自动配置规则都失效,慎用 !!!

三、使用 @EnableWebMvc 案例

如下为 @EnableWebMvc 全面接管下,需自定义静态资源访问路径代码示例,不止是这个行为需要自定义,其他自动配置的行为全部需要自定义,因此要慎用

@Configuration
@EnableWebMvc // 完全控制 SpringMvc , 全面接管 —— 谨慎使用
// 全面接管含义: SpringBoot 官方列举的自动配置,全部失效,必须自定义行为
public class AdminWebConfig implements WebMvcConfigurer {
    // 全面接管下,定义静态资源行为
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 访问 a 路径下的所有请求,都去 static 文件夹下寻找
        registry.addResourceHandler("/a/**").addResourceLocations("classpath:/static/");
    }
}

到此这篇关于SpringMvc定制化深入探究原理的文章就介绍到这了,更多相关SpringMvc定制化内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SpringMvc定制化深入探究原理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

SpringMvc定制化深入探究原理

SpringMVC是一种基于Java,实现了WebMVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦,这篇文章主要介绍了SpringMvc定制化原理
2022-11-13

Vue中v-bind原理深入探究

这篇文章主要给大家分享了v-bind的使用和注意需要注意的点,下面文章围绕v-bind指令的相关资料展开内容且附上详细代码需要的小伙伴可以参考一下,希望对大家有所帮助
2022-11-13

深入探究Java @MapperScan实现原理

之前是直接在Mapper类上面添加注解@Mapper,这种方式要求每一个mapper类都需要添加此注解,麻烦。通过使用@MapperScan可以指定要扫描的Mapper类的包的路径,这篇文章深入探究Java @MapperScan的实现原理
2023-01-04

JavaScript垃圾回收机制原理总结深入探究

就像人类会产生垃圾一样,程序运行过程中也会产生垃圾,如果不及时回收轻则将会拖慢程序运行,重则会导致系统崩溃,也就是所谓的内存泄漏。所以垃圾回收非常必要
2022-11-13

Spring底层原理由浅入深探究

Spring事务有可能会提交,回滚、挂起、恢复,所以Spring事务提供了一种机制,可以让程序员来监听当前Spring事务所处于的状态,这篇文章主要介绍了Spring底层事务原理,需要的朋友可以参考下
2023-02-24

深入探究Spring底层核心原理

理解IOC与AOP的实现机制,优化应用性能与可维护性。Spring通过IOC容器管理Bean,AOP实现切面编程,支持事务管理、ORM框架等。深入理解Spring原理,可以帮助我们更好地使用Spring框架,提高开发效率与质量
2023-05-16

JavaScript模块化揭秘:深入探究模块化背后原理

JavaScript模块化是一门复杂的技术,但理解其背后的原理可以帮助你成为一名更好的开发者。本文将深入探讨模块化背后的原理,并提供一些有用的提示,帮助你更好地使用模块化。
JavaScript模块化揭秘:深入探究模块化背后原理
2024-02-26

JavaScript深拷贝与浅拷贝原理深入探究

深拷贝和浅拷贝是面试中经常出现的,主要考察对基本类型和引用类型的理解深度,这篇文章主要给大家介绍了关于js深拷贝和浅拷贝的相关资料,需要的朋友可以参考下
2022-11-13

SpringMvc定制化原理是什么

这篇文章主要介绍了SpringMvc定制化原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringMvc定制化原理是什么文章都会有所收获,下面我们一起来看看吧。一、SpringBoot 自动配置套路
2023-07-04

Vue双向数据绑定与响应式原理深入探究

本节介绍双向数据绑定以及响应式的原理,回答了双向数据绑定和数据响应式是否相同,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
2022-11-13

深入探究JavaScript中WeakMap的原理与用法

这篇文章主要对JavaScript中的WeakMap进行深入探究,包括它的原理、用法和注意事项等,文中的示例代码简洁易懂,需要的小伙伴可以参考一下
2023-05-20

深入探究len函数在Python中的实现原理:深入理解其底层机制

深入理解Python中的len函数:掌握其底层实现原理,需要具体代码示例引言:Python是一门简洁、易读、容易上手的编程语言。在Python中,len()函数是一种非常常用的内置函数,用于返回某个容器对象(如字符串、列表、元组等)的元素
深入探究len函数在Python中的实现原理:深入理解其底层机制
2024-01-13

深入探究 Golang 控制语句:优化代码执行

控制语句用于控制 golang 程序流,包括条件语句(if-else、switch)、循环(for、while)和跳转语句(goto、break、continue)。为了优化代码执行,使用 if-else 优于嵌套 switch,优先 fo
深入探究 Golang 控制语句:优化代码执行
2024-04-08

PHP缓存机制详解:深入探究其工作原理和实际应用

PHP缓存机制全解析:深入理解其原理与应用引言:在开发Web应用程序中,缓存是一种重要的技术手段,能够显著提升应用程序的性能和用户体验。而PHP作为一种常用的服务器端编程语言,也提供了丰富的缓存机制供开发者使用。本文将深入探讨PHP缓存机
PHP缓存机制详解:深入探究其工作原理和实际应用
2024-01-23

深入探究Python中len函数的工作原理和用法

解析Python中的len函数:探索其背后的原理和用法在Python编程语言中,len函数是一种常用的内置函数,用于获取序列对象的长度或元素个数。本文将深入探讨len函数背后的原理和用法,并提供具体的代码示例。一、len函数的原理len
深入探究Python中len函数的工作原理和用法
2024-01-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录