11 spring-boot的MVC配置原理

news2024/11/25 9:52:29

11.1 spring-boot为MVC提供的自动配置

        1.ContentNegotiatingViewResolver视图解析器;

        2.静态资源或者支持WebJars;

        3.自动注册类型转换器:比如说前台提交user的字段,后台自动封装的意思;

        4.HttpMessageConverters:转换http的请求和相应,比如把一个user字符串转为一个json字符串;

        5.MessageCodesResolver:定义错误消息;

        6.index.html :支持首页映射;

        7.Favicon:支持图标映射;

        8.ConfigurableWebBindingInitializer:支持数据web的初始化绑定,把请求和数据封装到javaBean中;

11.2 扩展配置原理(理解)

        先创建一个包,叫做config,自定义的配置都放在里面;

        然后,再创建一个类叫MyMvcConfig的配置类,加上@Configuration注解,用这个类来全面扩展springMVC的配置;这个类必须实现WebMvcConfigurer接口,实现里面的方法即可;

        首先,要去实现视图解析器,搜索ContentNegotiatingViewResolver这个类,发现这个类实现了ViewResolver接口,因此这个类就是一个视图解析器;

public class ContentNegotiatingViewResolver extends WebApplicationObjectSupport implements ViewResolver, Ordered, InitializingBean

        自己在内部写一个静态内部类:

package jiang.com.springbootstudy.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.Locale;
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {

    // 放接口这样写,把bean放到接口里
    @Bean
    public ViewResolver myViewResolver(){
        return new MyViewResolver();
    }

    // 自定义了一个试图解析器
    public static class MyViewResolver implements ViewResolver{
        @Override
        public View resolveViewName(String s, Locale locale) throws Exception {
            return null;
        }
    }
}

         所有请求(包括视图解析器)会经过DispatcherServlet,里面有个方法是doDispatcher,所有的请求和相应都会经过这,因此,打个断点。

         点击DeBug,刷新页面。然后会自动跳到断点这,控制台内容如下:

        打开this, 找到viewResolver点开,发现刚刚创建的视图解析器已经被加载进来了,并且经过了doDispatcher方法。

12.3 总结

        在springboot中,有非常多的xxxx Configuration帮助我们进行扩展配置,只要看见了这个东西,我们就要注意了!

        

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/781006.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机视觉(一)图像预处理

本章内容 图像显示与存储原理颜色空间RGB颜色空间CMY(K)颜色空间HSV颜色空间CIE-XYZ颜色空间 图片存储原理主流颜色空间 图像增强的目标图像处理方法点运算:基于直方图的对比度增强直方图 :对数据空间(bin)…

了解 3DS MAX 3D摄像机跟踪设置:第 1 部分

这是一个关于使用行业标准插件 RayFire 在 3ds Max 中破坏元素的新系列。在本教程的第一部分中,我将向您展示如何在 RayFire 中使用在 3ds Max 中拆除元素的最基本操作和方法。 推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 准备场景 步…

使用Gin框架搭配WebSocket完成实时聊天

文章目录 前言实时聊天聊天功能测试发送信息 前言 在写项目的时候,需要完成实时聊天的功能,于是简单的学习下WebSocket,想知道WebSocket是什么的小伙伴可以去网上别的地方学习一下。 要实现实时聊天,网上的大部分内容都是Spring…

【MI】ModuleNotFoundError: No module named ‘braindecode.datautil.signalproc‘

使用HGD数据集时,需要从braindecode中调用 一直显示ModuleNotFoundError 以为是导入braindecode的版本太新了,于是在braindecode官网上找代码对应版本,一直找不到,最后从github上找到了代码的使用指南 GitHub - braindecode/br…

(学习笔记)HTTP Keep-Alive和TCP Keep-Alive

HTTP的Keep-Alive HTTP协议采用的是[请求-应答]模式,也就是客户端发起请求,服务端才会响应请求,一来一回这个样子。 由于HTTP是基于TCP传输协议实现的,客户端与服务端需要进行HTTP通信前,需要先建立TCP连接&#xff…

redis的常用命令和数据结构

目录 redis的基本特征 Redis操作命令行 redis的数据结构 Redis的基本特征 键值型,value支持多种不同的数据结构,功能丰富 单线程,每个命令具备原子性 低延迟,速快(基于内存,IO多路复用,良好…

第 109 场 LeetCode 双周赛

A 检查数组是否是好的 暴力: 排序后遍历判断 class Solution { public:bool isGood(vector<int> &nums) {sort(nums.begin(), nums.end());for (int i 0; i < nums.size() - 1; i)if (nums[i] ! i 1)return false;return nums.back() nums.size() - 1;} };B 将…

npm(基础)

基础-是什么 深度-为什么 #npm基础 - 现代前端开发模式 ##很多年前的前端,是什么样子? ##补充一下 ###Node SDK(software develop kit):Node jdk() IDE(集成dev env):VSCode ####有了npm,我们就可以创建一个工程环境 npm - 理解成一个包管理下载的工具 每一个npm管理…

树莓派刷机和登入

1.打开映像工具 2.选择映像文件写入 3.拔出卡插入树莓派上电 4.树莓派登入 1.HDMI视频线&#xff0c;连接到显示屏幕 2.串口登录 修改系统配置&#xff0c;启用串口登录树莓派 &#xff08;1) 打开SD卡根目录的"config.txt文件"&#xff0c;停止蓝牙&#xff0c;…

Pytorch深度学习------TensorBoard的使用

文章目录 1.什么是TensorBoard2.安装3.启动4.Pytorch 使用 TensorBoard4.1 写入数据4.2 写入图像 1.什么是TensorBoard TensorBoard是一个工具&#xff0c;主要用于数据可视化&#xff0c;用大白话的语言来说就是可以记录在机器学习中表格数据、非表格数据&#xff08;图片、文…

信息与通信工程学科面试准备——通信原理|推免/复试/补充

目录 1. 加性高斯白噪声 加性噪声 白噪声 2. 窄带随机过程 2.1 正弦波加窄带随机过程 3. 信道类型 4.多径传播 5. 频率选择性衰落与相关带宽 6.信道容量&#xff08;连续信道的信道容量&#xff09; 7.调制的目的和分类 7.1 目的 7.2 方式 7.3 作用(正弦波调制) …

08_堆学习

目录 一、堆的核心概述2、内存细分 二、设置堆内存大小与OOM1、设置堆内存大小2、OOM的说明 三、年轻代与老年代2、如何查看一个程序新生代和老年代的比例 四、图解对象分配过程1、图解对象分配过程2、对象分配特殊情况3、常用优化工具概述与 Jprofiler的演示 五、Minor GC、Ma…

MATLAB 自定义最小二乘法拟合直线点云(具体过程)方法二 (27)

MATLAB 自定义最小二乘法拟合直线点云(具体过程)方法二 (27) 一、算法简介二、算法实现1.代码(注释详细)2.效果展示一、算法简介 最小二乘法拟合直线,可以将离散的点云表达为一条规则的数学直线, 这里使用的直线方程为y = kx+b 这里提供具体的实现流程,展示如何进行最…

实现外部缓存-Redis

目录 实现 RedisTemplate RedisTemplate的序列化 RedisSerializer 创建Redis缓存配置类 测试使用 创建配置类 创建注解测试实体 创建配置文件 创建单元测试类进行测试 实现 RedisTemplate XXXTemplate 是 Spring 的一大设计特色&#xff0c;其中&#xff0c;RedisTe…

Linux笔记——进程管理与网络监控技术讲解

系列文章目录 Linux笔记——磁盘进行分区与挂载介绍 Linux笔记——管道相关命令以及shell编程 文章目录 系列文章目录 前言 一 进程管理 1 简介 2 系统执行进程的情况 3 查看进程树 4 服务管理 4.1 服务的运行级别 4.2 chkconfig 4.3 systemctl管理指令 4.4 针…

【文档智能】ERNIE-Layout

前言 这是百度在2022年的一篇工作&#xff1a;ERNIE-Layout。该工作通过增强布局知识的预训练模型&#xff0c;以学习更好的表示&#xff0c;结合文本、布局和图像的特征。旨在利用文档布局相关信息&#xff0c;进行文档理解&#xff0c;进一步提高文档信息抽取的性能。 1、文…

FPGA_学习_13_方差计算小模块

测距器件APD的性能与器件本身的温度、施加在APD的偏置电压息息相关。 在不同的温度下&#xff0c;APD的偏压对测距性能的影响非常大。 要确定一个合适的APD的偏压Vopt&#xff0c;首先你要知道当前温度下&#xff0c;APD的击穿电压Vbr&#xff0c;一般来讲&#xff0c;Vopt Vb…

【Zerotier】通过docker自建PLANET服务器

在如今全球互联的时代&#xff0c;我们对于互联网的依赖程度越来越高。然而&#xff0c;传统的网络连接方式在某些情况下可能会受到一些限制&#xff0c;例如局域网的范围限制、防火墙的阻断或者设备所处的多层NAT等。但是&#xff0c;现在有一个名为ZeroTier的工具出现了&…

yolov7 详解(1):yolov7 网络结构及创新点

文章目录 0. 概述1. 网络整体结构2.创新点2.1 创新点1:E-ELAN结构 (Extended efficient layer aggregation networks)ELAN结构2.2 创新点2: 模型缩放2.3 创新点3: 计划的重参数化卷积2.3.1 结构重参化原理2.3.2 什么是计划的重参数化卷积2.4 标签匹配策略论文: Trainable bag-…

【网络】协议与序列化反序列化

目录 一、相关概念 二、自定义协议 三、编写服务器 四、编写客户端 五、JSON 六、补充内容 一、相关概念 在《网络编程套接字》中&#xff0c;我们实现了服务器与客户端之间字符串的通信。但是更多的时候&#xff0c;需要传输的不仅仅是字符串&#xff0c;而是结构化的数…