SpringBoot切换Tomcat容器,SpringBoot使用Jetty容器
转载自 https://www.cnblogs.com/fanshuyao/p/8668059.html
SpringBoot切换Tomcat容器,
SpringBoot修改为Jetty容器,
SpringBoot使用undertow容器,
SpringBoot使用Jetty容器
================================
©Copyright 蕃薯耀 2018年3月29日
http://www.cnblogs.com/fanshuyao/
附件&源码下载见:http://fanshuyao.iteye.com/blog/2414809
一、SpringBoot默认的容器为Tomcat,依赖包在spring-boot-starter-web下
Xml代码
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
二、SpringBoot把容器修改为Jetty
方法很简单,就是在pom.xml文件中,在引用的spring-boot-starter-web排除Tomcat的依赖包,然后再引入Jetty容器的依赖包,如下:
Xml代码
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-tomcat</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <!-- Jetty适合长连接应用,就是聊天类的长连接 -->
- <!-- 使用Jetty,需要在spring-boot-starter-web排除spring-boot-starter-tomcat,因为SpringBoot默认使用tomcat -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-jetty</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
三、SpringBoot把容器修改为undertow
Xml代码
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-tomcat</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <!-- undertow不支持jsp -->
- <!-- 使用undertow,需要在spring-boot-starter-web排除spring-boot-starter-tomcat,因为SpringBoot默认使用tomcat -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-undertow</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
四、为什么可以这样切换呢?
因为SpringBoot在org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration类中已经配置好,根据依赖的Jar包自动切换,代码如下:
Java代码
- /**
- * Nested configuration if Tomcat is being used.
- */
- @Configuration
- @ConditionalOnClass({ Servlet.class, Tomcat.class })
- @ConditionalOnMissingBean(value = EmbeddedServletContainerFactory.class, search = SearchStrategy.CURRENT)
- public static class EmbeddedTomcat {
- @Bean
- public TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() {
- return new TomcatEmbeddedServletContainerFactory();
- }
- }
- /**
- * Nested configuration if Jetty is being used.
- */
- @Configuration
- @ConditionalOnClass({ Servlet.class, Server.class, Loader.class,
- WebAppContext.class })
- @ConditionalOnMissingBean(value = EmbeddedServletContainerFactory.class, search = SearchStrategy.CURRENT)
- public static class EmbeddedJetty {
- @Bean
- public JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory() {
- return new JettyEmbeddedServletContainerFactory();
- }
- }
- /**
- * Nested configuration if Undertow is being used.
- */
- @Configuration
- @ConditionalOnClass({ Servlet.class, Undertow.class, SslClientAuthMode.class })
- @ConditionalOnMissingBean(value = EmbeddedServletContainerFactory.class, search = SearchStrategy.CURRENT)
- public static class EmbeddedUndertow {
- @Bean
- public UndertowEmbeddedServletContainerFactory undertowEmbeddedServletContainerFactory() {
- return new UndertowEmbeddedServletContainerFactory();
- }
- }
方法上注解根据依赖的容器Jar包判断使用哪个容器:
如:
1、tomcat容器
Java代码
- @ConditionalOnClass({ Servlet.class, Tomcat.class })
表示有使用类Tomcat.class则是tomcat容器
2、Jetty容器
Java代码
- @ConditionalOnClass({ Servlet.class, Server.class, Loader.class,
- WebAppContext.class })
3、undertow容器
Java代码
- @ConditionalOnClass({ Servlet.class, Undertow.class, SslClientAuthMode.class })
================================
©Copyright 蕃薯耀 2018年3月29日
http://www.cnblogs.com/fanshuyao/
SpringBoot切换Tomcat容器,SpringBoot使用Jetty容器相关推荐
- springboot ---坑 tomcat部署springboot 一直运行不起来
1.首先部署springboot项目的tomcat的版本必须在8.0之后 2.springboot 同样是基于maven的,那么在pom.xml中的tomcat的依赖: <dependency& ...
- springboot 4大默认容器、指定运行容器
总结:假如自定义依赖全部存在,则执行生效顺序依次为 tomcat > jetty > undertow > netty private static RequestUpgradeSt ...
- springboot需要tomcat服务器吗_SpringBoot学习(二):内嵌服务器引擎(Tomcat,Jetty)实现原理...
概述 SpringBoot使用main方法启动的一个重要特性是,不需要打包成war部署到Tomcat这种Servlet容器中,而是只需打包成jar,然后通过java或mvn等命令运行这个jar包,然后 ...
- Spring Boot配置Tomcat容器、Jetty容器、Undertow容器
Spring Boot配置Tomcat容器.Jetty容器.Undertow容器 Tomcat.Jetty.Undertow Tomcat概述 Jetty概述 Undertow概述 Spring Bo ...
- SpringBoot源码分析之内置Servlet容器
原文链接:http://fangjian0423.github.io/2017/05/22/springboot-embedded-servlet-container/ SpringBoot内置了Se ...
- springBoot将Service实现类交给spring容器管理的两种方法
方法一: 在类名上面添加@Service注解 方法二: 添加配置文件,配置文件里添加添加方法如下的方法,并加@Bean注解 springBoot将(Service实现)类交给spring容器管理的目的 ...
- SpringBoot 配置Tomcat运行
SpringBoot 本身支持有两类的 WEB 容器:默认的 Tomcat.Jetty,那么现在如果从实际的角度来看, 在 SpringBoot 运行的时候 即使没有 WEB 容器,那么也可以采用自定 ...
- SpringBoot系列六:SpringBoot整合Tomcat
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 整合 Tomcat 2.背景 SpringBoot 本身支持有两类的 WEB 容器:默认的 To ...
- SpringBoot嵌入Tomcat原理分析
SpringBoot嵌入Tomcat原理 内嵌Tomcat启动原理 首先,来到启动SpringBoot项目的地方,也就是朱配置类. @SpringBootApplication public clas ...
最新文章
- MySQL测试环境遇到 mmap(xxx bytes) failed; errno 12解决方法
- 鼠标位置精确定位总结
- java 使用servlet做学生管理系统(无框架)
- java要从数据查出五百多万条数据_100w条数据 | 插入Mysql你要用多长时间?
- MVC5+EF6 入门完整教程十
- 从长板和咏春看单板滑雪固定器角度选择
- 教育真的可以改变命运?
- Android API Guides---Supporting Tablets and Handsets
- mysql数据备份数据解决方案_MYSQL数据备份解决方案
- 【位运算经典应用】 N皇后问题
- 新浪微博api的使用
- 苹果电脑语音听写的问题(电话中间加-,或者想要大写应该怎么设置呢)
- Docker部署Nebula Graph2.0和Studio
- 02_RampTexture(渐变纹理)
- Ubuntu下载ROMS源码
- Nginx的 HTTP 499 状态码处理
- win10升级后删除自带的微软输入法
- 医院影像图像科室工作站PACS系统 DICOM 三维图像后处理与重建
- 乐高机器人编程主要学什么
- java reference详解_你不可不知的Java引用类型之——Reference源码解析