package cn.web.config;

import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

/**
 * SpringBoot2.4
 * 默认不再注册DefaultServlet。因为多数应用中，Spring MVC提供的DispatcherServlet是唯一需要被注册的Servlet
 * DefaultServlet是Java EE提供的标准技术，如Tomcat、Jetty等都提供了这个类。简而言之它的作用就是兜底（拦截/），
 * 当别的servlet都没匹配上时就交给它来处理，一般用于处理静态资源如.jpg,.html,.js这类的静态文件
 * relaxed-query-chars: "{,}"
 * 1)可以通过此配置项server.servlet.register-default-servlet = true把它注册上去
 * 2)自定义的WebServerFactory定制器类:SpringBoot内嵌 Tomcat定制 ： WebServerFactoryCustomizer
 */
@Component
public class TomcatServerFactoryBean implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> 
{
	//使用WebServerFactoryCustomizerbean以编程方式配置server.servlet.register-default-servlet = true
	@Bean
	WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> enableDefaultServlet() {
		return (factory) -> factory.setRegisterDefaultServlet(true);
	}

	@Override
	public void customize(ConfigurableServletWebServerFactory server) {
		//server.setPort(8081);
	}
}