Spring Boot如何支持嵌入式Servlet容器

 更新时间:2020年10月09日 11:53:05   作者:StrongerBrother  
这篇文章主要介绍了Spring Boot如何支持嵌入式Servlet容器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Spring Boot支持Tomcat、Jetty和Undertow三种Servlet容器嵌入到Web应用程序中,开发者使用starter即可方便嵌入,默认情况下,嵌入服务器的访问端口为8080。

Servlets、Filters & Listeners

这些组件可以同组件扫描注册,即把他们定义为Spring Bean。

默认情况下,如果只有一个servlet,则把它映射到/;如果有多个servlet,则加上bean name作为前缀然后映射到/*。

如果默认策略不能满足你,你可以通过ServletRegistrationBean、FilterRegistrationBean和ServletListenerRegistrationBean来完全控制。

如果Filter需要按顺序执行,则可以通过@Order注解定义Filter的顺序,或者实现Ordered接口。

容器初始化

嵌入式容器不会直接执行Servlet 3.0+ javax.servlet.ServletContainerInitializer或org.springframework.web.WebApplicationInitializer,这是故意为之,是为了防止第三方包程序破坏Spring Boot应用程序。

如果你需要执行容器初始化,可以通过实现注册一个org.springframework.web.WebApplicationInitializer Bean。这个接口只有一个方法onStartup,这个方法可以访问ServletContext。

当使用嵌入式容器时,可以通过@ServeltComponentScan启用@WebServlet,@WebFilter和@WebListener注解。

ServletWebApplicationContext

ServletWebApplicationContext是一个特殊的WebApplicationContext,主要用于嵌入式Servelt。

自定义嵌入式容器

一般Servlet容器的普通配置可以通过Spring的Environment属性配置,也就是在application.properties文件中配置。

支持的普通配置:

  • 网络设置:server.port服务端口; server.address服务地址。
  • Session配置:server.servlet.session.presistent配置是否启用session;

server.servlet.session.timeout配置session超时时间;

server.servlet.session.store-dir配置session存储位置;

server.servlet.session.cookie.*配置session的cookie。

  • 错误处理:错误页面的位置server.error.path
  • ssl
  • http压缩

Spring Boot尽量统一不容器的配置,但是有些配置是容器特有的,这种情况下可以使用容器特有配置,如server.tomcat,server.undertow。

JSP限制

当采用嵌入式容器时,使用jsp有些限制:

  • 可执行jar不支持jsp
  • undertow不支持jsp

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 深入解析Java中的内部类

    深入解析Java中的内部类

    这篇文章主要介绍了Java中的内部类,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-07-07
  • Java8 Stream流多字段求和、汇聚的实例

    Java8 Stream流多字段求和、汇聚的实例

    这篇文章主要介绍了Java8 Stream流多字段求和、汇聚的实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Java 汉字获取拼音或首字母工具类代码分析

    Java 汉字获取拼音或首字母工具类代码分析

    在本篇内容里小编给大家分享的是一篇关于Java 汉字获取拼音或首字母工具类知识点内容,有需要的朋友们可以学习参考下。
    2021-06-06
  • idea maven pom不自动更新的解决方法

    idea maven pom不自动更新的解决方法

    这篇文章主要介绍了idea maven pom不自动更新的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • JAVA各种OOM代码示例与解决方法

    JAVA各种OOM代码示例与解决方法

    这篇文章主要给大家介绍了关于JAVA各种OOM代码示例与解决方法的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • 怎么把本地jar包放入本地maven仓库和远程私服仓库

    怎么把本地jar包放入本地maven仓库和远程私服仓库

    这篇文章主要介绍了怎么把本地jar包放入本地maven仓库和远程私服仓库的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Java中Caffeine本地缓存项目实例

    Java中Caffeine本地缓存项目实例

    这篇文章主要介绍了Java中Caffeine本地缓存项目实例,Caffeine是一个高性能Java 缓存库,使用Java8对Guava缓存重写版本,在Spring Boot 2.0中将取代Guava,使用spring.cache.cache-names属性可以在启动时创建缓存,需要的朋友可以参考下
    2023-10-10
  • 关于使用jpa聚合函数遇到的问题

    关于使用jpa聚合函数遇到的问题

    这篇文章主要介绍了关于使用jpa聚合函数遇到的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • 运用Spring Aop+注解实现日志记录

    运用Spring Aop+注解实现日志记录

    我们都知道Spring框架的两大特性分别是 IOC (控制反转)和 AOP (面向切面),这个是每一个Spring学习视频里面一开始都会提到的,这里,如果我们使用Aop来记录日志,那是再好不过了,感兴趣的朋友跟随小编一起学习下Spring Aop注解实现日志记录的过程吧
    2022-01-01
  • JVM内存增强之逃逸分析

    JVM内存增强之逃逸分析

    逃逸分析一种数据分析算法,基于此算法可以有效减少Java对象在堆内存中的分配。本文将详细讲讲逃逸分析的原理与实现,需要的可以参考一下
    2022-09-09

最新评论