SpringBoot-Web-MVC配置原理

自定义某一个组件

如果我们想自定义某一个组件,扩展springmvc,比如:视图解析器

  1. 自定义类实现视图解析器(组件)的接口,并重写方法
  2. 再把自定义的组件放到容器中(@Bean)
//根据官方文档,如果想要保持springmvc的配置,并添加一些配置,可以增加WebMvcConfigurer类型的@Configuration类,使自定义的类变成配置类
 @Configuration
 public class MyMvcConfig implements WebMvcConfigurer {
    
      

//想要自定义视图解析器,就需要实现视图解析器接口,并重写方法
//也可以通过@ConfigurationProperties(prefix = “属性名”)和自定义的配置文件yaml或properties绑定,调用配置文件里面的属性
      //只有放到容器中,springboot才能接管
     //2. 放到bean中
     @Bean 
     public ViewResolver myViewResolver(){
    
    
            return new MyViewResolver();
     }

     //自定义视图解析器需要实现ViewResolver接口
     //1. 写一个静态内部类实现ViewResolver接口
     private static class MyViewResolver implements ViewResolver{
    
    
       @Override
       public View resolveViewName(String s, Locale locale) throws Exception {
    
    
             return null;
    }
  }
}
  • 给 DispatcherServlet 中的 doDispatch方法 加个断点进行调试一下
    在这里插入图片描述
  • 查看debug信息,就可以看到我们自定义视图解析器
    在这里插入图片描述
    在这里插入图片描述

自定义一个视图跳转

  • 在配置类里面重写addViewControllers方法
 @Configuration
 public class MyMvcConfig implements WebMvcConfigurer {
    
      
 //在配置类里面重写addViewControllers方法
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
    
    
        // 浏览器发送/test , 就会跳转到test页面;
        registry.addViewController("/t1").setViewName("test");
    }
}

在这里插入图片描述

总结:

1. 想要扩展MVC,就要用 @Configuration 自定义一个配置类,然后实现WebMvcConfigurer接口,并重写想要扩展的组件的方法,再把自定义的组件放到容器中(@Bean)

2. 在springboot中,有很多的xxxConfiguration(或者@Configuration标注的类)帮助我们进行扩展配置,如果见到,注意该配置类在源码的基础上到底扩展了什么功能

猜你喜欢

转载自blog.csdn.net/qq_40429067/article/details/113632859
今日推荐