在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();//配置端口
container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"));//配置错误页面
container.setSessionTimeout(,TimeUnit.MINUTES);//配置用户会话过期时间
} }
特定配置举例
以Tomcat为例。
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
factory.setPort();
factory.setSessionTimeout(, 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();
factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND,"/404.html"));
}}
@Bean
public ConfigurableServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.setPort();
factory.setUriEncoding();//只能设置session,session过期时间只能在配置文件中配置
return factory;
}