springboot web开发之Web相关配置

Web相关配置

Springboot提供的自动配置

通过查看WebMvcAutoConfiguration和WebMvcProperties的源码,可以发现Springboot为我们提供了如下的配置:

自动配置ViewResolver

(1)BeanNameViewResolver

在控制器(@Controller)中的一个方法的返回值是字符串(视图名)会根据BeanNameViewResolver去查找Bean的名称为返回字符串的View来渲染视图。

(2)InternalResourceViewResolver

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



自动配置的静态资源

类路径文件

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

webjar

webjar就是将我们常用的脚本框架封装在jar包中的jar包,把webjar的
/META-INF/resources/webjars/下的静态文件映射为/webjar/**

自动配置的Formatter和Converter

只要我们定义了Converter、GenericConverter和Formatter接口的实现类的Bean,这些Bean就会自动注册到Spring MVC中

自动配置的HttpMessageConverters

在Springboot中,如果要新增定义的HttpMessageConverter,则只需定义一个你自己的HttpMessageonverters的Bean,然后在此Bean中注册自定义HttpMessageonverter即可。示例:

@Bean

public HttpMessageConverters customConverters(){

HttpMessageConverter<?> customConverter1 = new CustomConverter1();

HttpMessageConverter<?> customConverter2 = new CustomConverter2();

return new HttpMessageonverters(customConverter1, customConverter2);

}

静态首页的支持

把静态首页index.html文件放置在如下目录:

classpath:/META-INF/resources/index.html

classpath:/resources/index.html

classpath:/static/index.html

classpath:/public/index.html

当我们访问应用程序根目录http://localhost:8080/时,会直接映射。

自定义静态资源配置

在application.yml文件中配置





自定义WebMvc配置类





接管Springboot的Web配置

基本概念

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

说明

不推荐使用这种方法。

示例



我们这里重写的addViewControllers方法,并不会覆盖WebMvcAutoConfiguration中的addViewControllers,这也就意味着我们自己的配置和Spring boot的自动配置同时有效,这也是我们推荐添加自己的MVC配置的方式。

注册Servlet、Filter、Listener

基本概念

Spring Boot提供了 ServletRegistrationBean,FilterRegistrationBean,
ServletListenerRegistrationBean
这3个东西来进行配置Servlet、Filter、Listener,当使用嵌入式的Servlet容器(Tomcat、jetty)时,我们通过注册将Servlet、Filter、Listener声明为Spring Bean而达到注册的效果。

示例