SpringBoot配置嵌入式Servlet容器
简介
SpringBoot默认使用Tomcat作为嵌入式的Servlet容器,查看SpringBoot的依赖图:
定制和修改Servlet容器(Tomcat)的相关配置
以传统外置Servlet容器Tomcat举例,如需定制修改相关配置,只需要在配置文件中,如server.xml、web.xml中配置相关参数即可。而SpringBoot中的内置tomcat该如何配置呢?
方式1:修改和server有关的配置
只需在application.properties或application.yml中修改与server有关的配置即可,详细的配置参数,在ServerProperties中均有定义:
server.port=8081
server.context-path=/crud
server.tomcat.uri-encoding=UTF-8
//通用的Servlet容器设置
server.xxx
//Tomcat的设置
server.tomcat.xxx
...
方式2:编写嵌入式的Servlet容器的定制器
编写一个EmbeddedServletContainerCustomizer
:嵌入式的Servlet容器的定制器,来修改Servlet容器的配置:
@Bean //一定要将这个定制器加入到容器中
public EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer(){
return new EmbeddedServletContainerCustomizer() {
//定制嵌入式的Servlet容器相关的规则
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
container.setPort(8083);
}
};
}
注册Servlet三大组件【Servlet、Filter、Listener】
由于SpringBoot默认是以jar包的方式启动内置Servlet容器,来启动SpringBoot的web应用,并没有web.xml文件,所以注册三大组件有以下方式
ServletRegistrationBean(注册Servlet)
@Bean
public ServletRegistrationBean myServlet(){
ServletRegistrationBean registrationBean = new ServletRegistrationBean(new MyServlet(),"/myServlet");
return registrationBean;
}
FilterRegistrationBean(注册Filter)
@Bean
public FilterRegistrationBean myFilter(){
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(new MyFilter());
registrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));
return registrationBean;
}
ServletListenerRegistrationBean(注册Listener)
@Bean
public ServletListenerRegistrationBean myListener(){
ServletListenerRegistrationBean<MyListener> registrationBean = new ServletListenerRegistrationBean<>(new MyListener());
return registrationBean;
}