返回顶部
首页 > 资讯 > 后端开发 > Python >Java深入浅出掌握SpringBoot之MVC自动配置原理篇
  • 705
分享到

Java深入浅出掌握SpringBoot之MVC自动配置原理篇

2024-04-02 19:04:59 705人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

Spring Boot 为 spring mvc 提供了自动配置,适用于大多数应用程序。 官方文档描述: 自动配置在 Spring 的默认值之上添加了以下功能: 从官方描述解析:

Spring Bootspring mvc 提供了自动配置,适用于大多数应用程序。

官方文档描述:

自动配置在 Spring 的默认值之上添加了以下功能:

从官方描述解析:


If you want to keep Spring Boot MVC features and you want to add 
additionalMVC configuration (interceptors, fORMatters, view controllers, 
and other features), you can add your own 
@Configuration class of type WEBMvcConfigurer but without @EnableWebMvc.

扩展springMVC

由于WebMvcConfigurer是个接口

创建一个MyMvcConfig实现这个接口

之前我们学的视图解析器是我们手动配置

ViewResolver 实现了视图解析器接口的类,就看做是视图解析器

搜索ContentNeGotiatingViewResolver,找到如下方法resolveViewName!找到对应的视图解析代码

从 getCandidateViews中看到它是把所有的视图解析器拿来,进行遍历循环

结论:ContentNegotiatingViewResolver 这个视图解析器就是用来组合所有的视图解析器的

可以看出它是从容器中去找视图解析器,我们也可以在容器中实现一个视图解析器!

容器中实现一个视图解析器

1、我们在主程序中去写一个视图解析器;

2、如何看我们自己写的视图解析器是否起了作用呢?

我们给 DispatcherServlet 中的 doDispatch方法 加个断点进行调试一下,因为所有的请求都会走到这个方法中!

3、我们启动我们的项目,然后随便访问一个页面,看一下Debug信息,找到this

4、找到视图解析器,我们看到我们自己定义的就在这里了;

所以说,我们如果想要使用diy定制的东西,我们只需要给容器中添加这个组件就好了,SpringBoot就会帮我们自动装配!

转换器和格式化器

找到格式化转换器:

点进去可以看到

如果配置了自己的格式化方式,就会注册到Bean中生效,我们可以在配置文件中配置日期格式化的规则:可以看到在我们的Properties文件中,我们可以进行自动配置它!

修改SpringBoot的默认配置

结论:我们要扩展SpringMVC,官方就推荐我们这么去使用,既保SpringBoot留所有的自动配置,也能用我们扩展的配置!

分析一下原理:

1、WebMvcAutoConfiguration 是 SpringMVC的自动配置类,里面有一个类WebMvcAutoConfigurationAdapter

2、这个类上有一个注解,在做其他自动配置时会导入:@Import(EnableWebMvcConfiguration.class)

3、我们点进EnableWebMvcConfiguration这个类看一下,它继承了一个父类:DelegatingWebMvcConfiguration

这个父类中有这样一段代码:

4、我们可以在这个类中去寻找一个我们刚才设置的viewController当做参考,发现它调用了一个


 
protected void addViewControllers(ViewControllerReGIStry registry) {
    this.configurers.addViewControllers(registry);
}

5、我们点进去看一下


 
public void addViewControllers(ViewControllerRegistry registry) {
    Iterator var2 = this.delegates.iterator();
 
    while(var2.hasNext()) {
        // 将所有的WebMvcConfigurer相关配置来一起调用!包括我们自己配置的和Spring给我们配置的
        WebMvcConfigurer delegate = (WebMvcConfigurer)var2.next();
        delegate.addViewControllers(registry);
    }
 
}

结论:所有的WebMvcConfiguration都会被作用,不止Spring自己的配置类,我们自己的配置类当然也会被调用

全面接管SpringMVC

全面接管即:SpringBoot对SpringMVC的自动配置不需要了,所有都是我们自己去配置!

只需在我们的配置类中要加一个@EnableWebMvc。

我们开发中,不推荐使用全面接管SpringMVC

1、这里看到它是导入了一个类,继续点进去看

2、它继承了一个父类 WebMvcConfigurationSupport

3、回顾一下Webmvc自动配置类

总结:@EnableWebMvc将WebMvcConfigurationSupport组件导入进来;

而导入的WebMvcConfigurationSupport只是SpringMVC最基本的功能!

到此这篇关于Java深入浅出掌握SpringBoot之MVC自动配置原理篇的文章就介绍到这了,更多相关Java SpringBoot MVC自动配置内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java深入浅出掌握SpringBoot之MVC自动配置原理篇

本文链接: https://lsjlt.com/news/155577.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java深入浅出掌握SpringBoot之MVC自动配置原理篇
    Spring Boot 为 Spring MVC 提供了自动配置,适用于大多数应用程序。 官方文档描述: 自动配置在 Spring 的默认值之上添加了以下功能: 从官方描述解析: ...
    99+
    2024-04-02
  • 深入浅析SpringBoot自动配置原理
    SpringBoot2.3.1版本源码 一、SpringBoot启动的时候加载主配置类,通过@EnableAutoConfiguration注解开启了自动配置功能 。 二...
    99+
    2024-04-02
  • Java 深入浅出掌握Map集合之双列集合
    目录前言Map集合Map概述Map特点Map集合的功能Map集合的遍历Map集合的各个子类集合框架图总结前言 友友们,大家好哇!这一期我为大家带来双列集合(Map)的相关知识点讲解,...
    99+
    2024-04-02
  • SpringBoot原理之自动配置机制详解
    目录前言 Spring配置类 SpringBoot自动配置 自动配置的概念 自动配置的运行机制 加载方式 SpringFactoriesLoader机制 SpringFactorie...
    99+
    2024-04-02
  • 深入浅析Java中拆箱与自动装箱的原理
    这篇文章给大家介绍深入浅析Java中拆箱与自动装箱的原理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。什么是自动装箱和拆箱自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象...
    99+
    2023-05-31
    java 自动装箱 拆箱
  • 浅谈什么是SpringBoot异常处理自动配置的原理
    异常处理自动配置 ErrorMvcAutoConfiguration自动配置类自动配置了处理规则,给容器中注册了多种组件 errorAttributes组件,类型为DefaultEr...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作