Web相关配置
提供的自动配置
自动配置类:WebMvcAutoConfiguration
1.自动配置的ViewResolver
- ContentNegotiatingViewResolver:代理给不同的ViewResolver处理不同的View。
- BeanNameViewResolver:根据返回的字符串寻找相应的view。
- InternalResourceViewResolver:设置前缀、后缀、控制器中的方法。
2.自动配置的静态资源
addResourceHandlers方法中定义配置
- 类路径文件:/static、/public、/resources、/META-INF/resources静态文件映射为/*,可以直接通过/context/访问。
- webjar
3.自动配置的Formatter和Converter
定义类实现Convert、GenericConvert、Formatter即会自动注册
4.自动配置的HttpMessageConverters
- jackson的jar在类路径下,则自动注册。
- gson的jar在类路径下,则自动注册。
5.自动配置的静态首页
类路径文件夹下的index.html自动映射
自定义配置
- @Configuartion定义配置类,增加@EnableWebMvc注解类。
- @Configuartion定义配置类继承WebMvcConfigurerAdapter,重写addViewControllers方法,不会覆盖WebMvcAutoConfiguration原有配置。
注册Servlet、Filter、Listener
- 将xxServlet、xxFilter、xxListener声明为Spring Bean即可。
- 将xxServlet、xxFilter、xxListener作为参数注册到相应的ServletRegistrationBean、FilterRegistrationBean、ServletListernerRegistrationBean。
代码配置Tomcat
- 注册一个实现EmbeddedServletContainerCustomizer接口的Bean,实现其customize方法。
- 若在@SpringBootApplication配置,需声明为static:
@Component
public static class CustomServletContainer implements EmbeddedServletContainerCustomizer{
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
container.setPort(8888);//1
container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"));
container.setSessionTimeout(10,TimeUnit.MINUTES);
}
}
SSL配置
1.生成证书
$JAVA_HOME\bin\keytool.exe -genkey -alias tomcat,当前目录下生成证书文件.keystore。
2.SpringBoot配置SSL
- 将.keystore文件复制到项目根目录。
- 配置项
# SpringBoot: context-path = contextPath = CONTEXT_PATH
server.port = 8443
server.ssl.key-store = .keystore
server.ssl.key-store-password = $pass
server.ssl.keyStoreType = JKS
server.ssl.keyAlias:tomcat
3.http重定向https
- 配置TomcatEmbeddedServletContainerFactory,并且添加Tomcat的connector来实现。
- @SpringBootApplication配置类增加:
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
tomcat.addAdditionalTomcatConnectors(httpConnector());
return tomcat;
}
@Bean
public Connector httpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(8080);
connector.setSecure(false);
connector.setRedirectPort(8443);
return connector;
}
配置Favicon
- 配置开关:spring.mvc.favicon.enabled=true。默认true。
- 配置icon:favicon.ico放在类路径文件夹下。