21-SpringBoot——核心-Web配置

Spring Boot & Spring Cloud 同时被 2 个专栏收录
43 篇文章 0 订阅
32 篇文章 16 订阅

SpringBoot——核心-Web配置


【博文目录>>>】


【项目源码>>>】


Spring Boot 提供的自动配置


分析WebMvcAutoConfiguration 及WebMvcProperties 的源码,发现Spring Boot为我们提供了如下自动配置功能。

自动配置ViewResolver


(1) ContentNegotiatingViewResolver:这是一个特殊的ViewResolver, ContentNegotiatingViewResolver 不自己处理View ,而是代理给不同的ViewResolver 来处理,它有最高的优先级。

(2) BeanNameViewResolver:根据Bean的名称来解析视图,如控制器( @Controller )中的一个方法的返回值的字符串(视图名)为X,BeanNameView Resolver 去查找名为X的View 来渲染视图。

定义BeanNameView Resolver 的Bean:

这里写图片描述

定义一个View 的Bean ,名称为jsonView

这里写图片描述

在控制器中,返回值为字符串jsonView ,它会找Bean 的名称为jsonView 的视图来渲染:

这里写图片描述
这里写图片描述

(3) IntemalResource View Resolver:
这个是一个极为常用的ViewResolver,主要通过设置前缀、后缀,以及控制器中方法来返回视图名的字符串,以得到实际页面, Spring Boot 的源码如下:

@Bean
@ConditionalOnMissingBean
public InternalResourceViewResolver defaultViewResolver() {
   InternalResourceViewResolver resolver = new InternalResourceViewResolver();
   resolver.setPrefix(this.mvcProperties.getView().getPrefix());
   resolver.setSuffix(this.mvcProperties.getView().getSuffix());
   return resolver;
}

自动配置的静态资源


在自动自己置类的addResourceHandlers 方法中定义了以下静态资源的自动配置。

( 1) 类路径文件:把类路径下的/static 、/public 、/resources 和/META-INF/resources 文件夹下的静态文件直接映射为/**,可以通过http://localhost:8080/**来访问。

(2) webjar:webjar 就是将我们常用的脚本框架封装在jar 包中的jar 包,把webjar 的/META-INF/resources/webjars/下的静态文件映射为/webjar/**,可以通过http://localhost: 8080/webjar/**来访问。

自动配置Formatter和Converter


从WebMvcAutoConfiguration代码中可以看到,只要我们定义了Converter 、GenericConverter 和Formatter 接口的实现类的Bean, 这些 Bean 就会自动注册到Spring 容器中。

接管Spring Boot 的Web 配置


如果Spring Boot 提供的Spring MVC 不符合要求,则可以通过一个配置类(注解有@Configuration 的类)加上@EnableWebMvc 注解来实现完全自己控制的MVC 配置。如果既需要保留Spring Boot 提供的便利,又需要增加自己的额外的配置的时候,可以定义一个配置类并继承WebMvcConfigurer Adapter,无须使用@EnableWebMvc 注解。

这里写图片描述
这里写图片描述

在这的addViewControllers 方法,并不会覆盖Web MvcAutoConfiguration 中的addViewControllers,也就是我们自己的配置和Spring Boot 的自动配置同时有效,这是推荐的MVC 配置的方式。

注册Servlet、Filter、Listener


可以通过将Servlet 、Filter 和Listener声明为Spring Bean 而达到注册的效果;或者注册ServletRegistrationBean、FilterRegistrationBean 和ServletListenerRegistrationBean 的Bean。
(1) 直接注册Bean 示例

这里写图片描述

(2) 通过RegistrationBean 示例
这里写图片描述
这里写图片描述

  • 2
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页

打赏

Wang-Junchao

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值