SpringBoot学习篇|配置拓展Webmvc

SpringBoot学习篇|配置拓展Webmvc

image-20220618000721149

拓展WebMVC

Spring MVC Auto-configuration

有关内容原文见官方文档

image-20220618140807190

简单来说就是能够通过Auto-configuration实现我们之前分析见到的全部功能,例如静态资源加载

  1. ContentNegotiatingViewResolver and BeanNameViewResolver beans是视图解析器
  2. 包括WebJars 在内的静态资源加载
  3. 自动注册类型转换器(可以自动封装转换对象)
  4. 支持一些消息格式的转换
  5. 可以自定义一些错误消息分析器
  6. 支持首页映射
  7. 支持图标自定义
  8. 支持web初始化绑定

如果想要在上面配置的基础上进行拓展添加一些组件MVC configuration (interceptors, formatters, view controllers, and other features),那么我们只需要自己写一个配置类即可,这个配置类进行以下配置:

  1. 在Config包新建一个类(只是一般习惯,不是强制要求)
  2. @Configuration注释,标注这是一个配置类
  3. 实现WebMvcConfigurer接口,让当前类作为实现类

然后我们就可以在类里面通过@Override重写WebMvcConfigurer接口的方法,然后就可以通过重写方法添加我们的功能组件(例如添加视图解析器),下面是一个通过重写WebMvcConfigurer接口的addViewControllers方法就可以添加一个视图跳转

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    //添加一个视图跳转功能
    @override
    public void addViewControllers (ViewControllerRegistry registry) {
    //浏览器发送/kuang,就会跳转到success页面;
    registry.addViewController(" /h0cksr" ).setViewName( "success") ;
    }
}

众多的自动配置原理都是一样的,通过这个WebMVC的自动配置

SpringBoot在自动配置很多组件的时候,先看容器中有没有用户自己配置的(如果用户自己配置@bean),如果有就用用户配置的,如果没有就用自动配置的;如果有些组件可以存在多个,比如我们的视图解析器,就将用户配置的和自己默认的组合起来!

WebMVC全盘接管

上面需要注意的是我们不能让我们的配置类带@EnableWebMvc注释,不然的话这个类就不是MVC视图的配置拓展,而是MVC视图的配置接管了,首先我们要明白一点,这里的接管指的是接管自动导入全部默认配置的WebMvcAutoConfiguration类,因为添加了这个注释之后WebMvcAutoConfiguration机会因为不满足@ConditionalOnMissingBean注解而全盘崩溃从而被接管,接管它的类就是@ConditionalOnMissingBean判断的类WebMvcConfigurationSupport,这个类是一个接口,在@EnableWebMvc注释中导入的DelegatingWebMvcConfiguration类就是接口的实现类,下面跟进源码分析一下:

  1. 先看一下自动导入配置的WebMvcAutoConfiguration

    image-20220618141931254

    @ConditionalOnxxx注解表示的是判断条件,ConditionalOnMissingBean表示只有参数中的类不存在时才生效,而@EnableWebMvc注释就实现了这个判断类,

  2. 下面进入@EnableWebMvc查看,可以看到添加了@EnableWebMvc注释之后主要就是导入一个类

  3. 跟进看到DelegatingWebMvcConfiguration实现了WebMvcConfigurationSupport接口

    image-20220618141804121

  4. 因为接口实现所以WebMvcAutoConfiguration被接管

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇