MVC配置原理

如果你想保存springboot的mvc配置并且还想自己添加自己的配置就用这个。

视图解析器原理,它会从IOC容器里获取配置好视图解析器的配置类里的视图解析器集合,

然后遍历集合,生成一个一个的视图对象,放入候选 视图里,然后返回这个候选视图。

DispatcherServlet 所有的请求都会走 diDispatch() 方法

java 复制代码
package com.kuang.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.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.Locale;

//扩展WebMvc  所有请求会经过dispatcherServlet
//1.这是一个配置类
@Configuration
//2.实现WebMvcConfigurer这个接口
//记住不要标注它,@EnableWebMvc,一旦标注代表MVC全面被你接管,springboot自动配置不生效,很多东西系统配置好了,全面接管就是重新写
public class MyMvcConfig implements WebMvcConfigurer {

    //ViewResolver 实现了视图解析器接口的类,我们就可以把它看作视图解析器

    //把自定义视图解析器放入IOC容器里调用
    @Bean
    public ViewResolver viewResolver(){
        return new MyViewResolver();
    }


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




}

只要实现ViewResolver接口,然后把这个对象,放入IOC容器里,DispatcherServlet就会自动扫描并且装配上去,//如果。你想diy一些定制化的功能,只要写这个组件,然后将它交给springboot,springboot就会帮我们自动装配!

java 复制代码
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 这种方式也会覆盖掉默认的web静态资源目录
        registry.addResourceHandler("/**").addResourceLocations("classpath:static/","classpath:templates/");
    }
java 复制代码
package com.kuang.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.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.Locale;

//扩展WebMvc  所有请求会经过dispatcherServlet
//1.这是一个配置类
@Configuration
//2.实现WebMvcConfigurer这个接口
//记住不要标注它,@EnableWebMvc,一旦标注代表MVC全面被你接管,springboot自动配置不生效,很多东西系统配置好了,全面接管就是重新写
public class MyMvcConfig implements WebMvcConfigurer {

//    //ViewResolver 实现了视图解析器接口的类,我们就可以把它看作视图解析器
//
//    //把自定义视图解析器放入IOC容器里调用
//    @Bean
//    public ViewResolver viewResolver(){
//        return new MyViewResolver();
//    }
//
//
//    //自定义了一个自己的视图解析器ViewResolver
//    public static class MyViewResolver implements ViewResolver{
//        @Override
//        public View resolveViewName(String viewName, Locale locale) throws Exception {
//            return null;
//        }
//    }


//    视图跳转
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/kuang").setViewName("test");
    }
}

视图跳转,通过转发又走Thymeleaf模板的视图解析器,转发到 /template/test.html 来拼接 网页进入到这个网页

结论:如果我们要扩展一个配置,官方建议我们 去实现一个XXXConfigurer 接口,来自己配置部分设置,剩下不配的交给springboot来自动配置。

复制代码
@EnableWebMvc

导入了一个类:

复制代码
DelegatingWebMvcConfiguration.class 这个类继承了它,所以相当于使全部配置失效
相关推荐
xbgRS14 分钟前
spring整合mybaits
java·spring·mybatis
Tim_101 小时前
【C++】024、new[]与delete[]配对使用
java·开发语言
小黑技术栈2 小时前
Java前端基础到入门——16day
java·开发语言·前端
2401_827499992 小时前
C++(黑马)05-提高编程
java·开发语言·c++
卷心菜的学习路2 小时前
基于多模态向量检索的数学相似题推荐系统:完整设计、算法与实验
java·python·算法·大模型·推荐算法·数学相似题
豆沙沙包?3 小时前
C++-程序的内存模型(P84-P88)
java·jvm·c++
吴声子夜歌4 小时前
正则指引——匹配原理
java·正则表达式
凤山老林4 小时前
可观测性落地:Spring Boot 3.x + Actuator + Prometheus + Grafana 监控体系搭建
spring boot·grafana·prometheus
未秃头的程序猿4 小时前
凌晨3点被叫醒:线上OOM,我用这套流程40分钟定位根因
java·jvm·后端
agent8975 小时前
实战升级|SpringBoot WebSocket实现多轮对话AI流式问答(上下文记忆+自动重连+会话隔离)
人工智能·spring boot·websocket