在Spring Boot2.0以上配置嵌入式Servlet容器时EmbeddedServletContainerCustomizer类不存在,经网络查询发现被WebServerFactoryCustomizer替代.
Spring Boot 1.0中:
通用配置举例
@Component public static class CustomServletContainer implements EmbeddedServletContainerCustomizer{ @Override public void customize(ConfigurableEmbeddedServletContainer container) { container.setPort(8888);//配置端口 container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"));//配置错误页面 container.setSessionTimeout(10,TimeUnit.MINUTES);//配置用户会话过期时间 } }
特定配置举例
以Tomcat为例。 @Bean public EmbeddedServletContainerFactory servletContainer() { TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(); factory.setPort(8888); factory.setSessionTimeout(10, TimeUnit.MINUTES); factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404.html")); return factory; }
在springboot2.0之后
@FunctionalInterface public interface WebServerFactoryCustomizer<T extends WebServerFactory> { void customize(T factory); }
package springboot.configure; import org.springframework.boot.web.server.ConfigurableWebServerFactory; import org.springframework.boot.web.server.ErrorPage; import org.springframework.boot.web.server.WebServerFactoryCustomizer; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; @Component public class CustomServletContainer implements WebServerFactoryCustomizer<ConfigurableWebServerFactory>{ @Override public void customize(ConfigurableWebServerFactory factory) { factory.setPort(8888); factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND,"/404.html")); } }
@Bean public ConfigurableServletWebServerFactory webServerFactory() { TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(); factory.setPort(9000); factory.setUriEncoding();//只能设置session,session过期时间只能在配置文件中配置 return factory; }