首页 > 编程语言 > 详细

【串线篇】spring boot配置嵌入式servlet容器

时间:2019-12-24 16:38:28      阅读:74      评论:0      收藏:0      [点我收藏+]

SpringBoot默认使用Tomcat作为嵌入式的Servlet容器

 

 

 

 技术分享图片

 

 

 

问题?

一、如何定制和修改Servlet容器的相关配置

1、方法1修改和server有关的配置(ServerProperties【也是EmbeddedServletContainerCustomizer】)

server.port=8081
server.context‐path=/crud

server.tomcat.uri‐encoding=UTF‐8

//通用的Servlet容器设置
server.xxx
//Tomcat的设置 
server.tomcat.xxx

2、方法2新建一个config类

编写一个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容器(即嵌入式的tomcat)

来启动SpringBoot的web应用,没有web.xml文件。

1.新建这三个servlet类

2.注册三大组件用以下方式新建一个config类,在这个配置类里传入自己的servlet

ServletRegistrationBeanServlet

    //注册三大组件
    @Bean
    public  ServletRegistrationBean  myServlet(){
    ServletRegistrationBean  registrationBean  =  new  ServletRegistrationBean(new MyServlet(),"/myServlet");
    return registrationBean; 6    
}

FilterRegistrationBeanFilter

    @Bean
    public  FilterRegistrationBean  myFilter(){
    FilterRegistrationBean  registrationBean  =  new  FilterRegistrationBean();
    registrationBean.setFilter(new  MyFilter());
    registrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));
    return registrationBean; 7    }

ServletListenerRegistrationBeanListener

    @Bean
    public  ServletListenerRegistrationBean  myListener(){
    ServletListenerRegistrationBean<MyListener>  registrationBean  =  new ServletListenerRegistrationBean<>(new  MyListener());
    return registrationBean; 5    
}

SpringBoot帮我们自动SpringMVC的时候,自动的注册SpringMVC的前端控制器;DIspatcherServlet;

DispatcherServletAutoCon?guration中:

@Bean(name  =  DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME)
@ConditionalOnBean(value  =  DispatcherServlet.class,  name  = DEFAULT_DISPATCHER_SERVLET_BEAN_NAME)
public  ServletRegistrationBean  dispatcherServletRegistration( DispatcherServlet  dispatcherServlet)  {
ServletRegistrationBean  registration  =  new  ServletRegistrationBean(
//默认拦截: / 所有请求;包静态资源,但是不拦截jsp请求;/*会拦截jsp
//可以通过server.servletPath来修改SpringMVC前端控制器默认拦截的请求路径

registration.setName(DEFAULT_DISPATCHER_SERVLET_BEAN_NAME); registration.setLoadOnStartup(
this.webMvcProperties.getServlet().getLoadOnStartup()); if  (this.multipartConfig  !=  null)  {
registration.setMultipartConfig(this.multipartConfig);
}
return registration;
}

三、替换为其他嵌入式Servlet容器

(默认是嵌入Tomcat)

技术分享图片

 

默认支持:

Tomcat(默认使用)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring‐boot‐starter‐web</artifactId>
    引入web模块默认就是使用嵌入式的Tomcat作为Servlet容器;
</dependency>

Jetty

<!‐‐ 引入web模块 ‐‐>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐starter‐web</artifactId>
<exclusions>
<exclusion>
<artifactId>spring‐boot‐starter‐tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>


<!‐‐引入其他的Servlet容器‐‐>
<dependency>
<artifactId>spring‐boot‐starter‐jetty</artifactId>
<groupId>org.springframework.boot</groupId>
</dependency>

Undertow

    <!‐‐ 引入web模块 ‐‐>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring‐boot‐starter‐web</artifactId>
    <exclusions>
    <exclusion>
    <artifactId>spring‐boot‐starter‐tomcat</artifactId>
    <groupId>org.springframework.boot</groupId>
    </exclusion>
    </exclusions>
    </dependency>


    <!‐‐引入其他的Servlet容器‐‐>
    <dependency>
    <artifactId>spring‐boot‐starter‐undertow</artifactId>
    <groupId>org.springframework.boot</groupId>
    </dependency>

【串线篇】spring boot配置嵌入式servlet容器

原文:https://www.cnblogs.com/yanl55555/p/12091655.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!