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而达到注册的效果。