springboot项目打成war包放入tomcat中运行,原理分析

简介: 1.需要将pom.xml文件的packaging设置为war。 2.改成war包之后,就可以直接使用maven的命令将项目打成一个war包了。 3.将这个war包直接放入到tomcat中运行。 4.启

1.需要将pom.xml文件的packaging设置为war。

2.改成war包之后,就可以直接使用maven的命令将项目打成一个war包了。

3.将这个war包直接放入到tomcat中运行。

4.启动startup.bat,你可以发现控制台,并没有打印springboot启动的信息。

从上面的tomcat启动信息,可以看到springboot并没有启动,即spring的环境和springmvc的环境,并没有初始化。所以是访问不到项目的。

基于这个结果,我们在想,为什么会启动不了springboot的环境呢?即在使用tomcat启动我们的war包的时候,tomcat并没有执行到我们的主类(启动类)。

那怎样才能让tomcat启动的时候,执行到我们的主类呢?

5.在springboot的启动类,继承了SpringBootServletInitializer类,重写configure()方法;然后再使用maven的package命令重写打war包,就可以让tomcat启动的时候,执行到我们的主类。

这个时候,我们再将打成的war放入到tomcat中运行,就可以看到已经打印了springboot启动的信息了,即已经初始化了spring和springmvc的环境了。

6.为什么在springboot的主类继承了SpringBootServletInitializer,tomcat就可以执行到我们的主类呢?

这个问题,就要涉及到servlet3.0的新特性了:

通过上图可以知道,servlet3.0给我们提供了一个非常牛逼的规范,只要我们按照这个规范,我们就能在tomcat启动的时候去掉web.xml,而且还能初始化spring环境。

1.定义了一个新的规范,即在资源文件的META-INF/services文件夹下面,有一个以javax.servlet.ServletContainerInitializer命名的文件,里面定义一个你自己的类的全类名。同时该类实现javax.servlet.ServletContainerInitializer接口,并重写onStartup方法\
2.在上面这个规范下,所有按照这个规范的servlet服务器,例如:tomcat,在服务启动的时候,会自己反射执行这个类的onStartup()方法\
3.通过这个新的规范,我们就不需要按照传统的方法,需要在web.xml文件中,初始化spring等配置和环境,这样做就能实现零配置,springboot就是按照这个思想实现零配置的。

这就是为什么springboot项目在使用tomcat启动的时候,就需要实现SpringBootServletInitializer这个类,并重写configure方法的原因了。

目录
相关文章
|
Java 应用服务中间件
多项目分接口:在同一Tomcat下使用不同的端口号访问不同的项目。
总而言之,要在同一Tomcat服务器下使用不同端口访问不同项目,关键是通过对server.xml文件的配置创建多个 `<Service>`实例和相应的虚拟主机。这种方法既实现了项目隔离,也有助于优化资源利用率。通过遵循本文的详细说明,很容易地就能满足需求实现多项目分接口。
661 38
|
Java 应用服务中间件 Linux
Tomcat运行日志字符错乱/项目启动时控制台日志乱码问题
总结: 通过以上几种方法,概括如下:指定编码格式、设置JVM的文件编码、修改控制台输出编码、修正JSP页面编码和设置过滤器。遵循这些步骤,你可以依次排查和解决Tomcat运行日志字符错乱及项目启动时控制台日志乱码问题。希望这些建议能对你的问题提供有效的解决方案。
2485 16
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
706 0
|
Java 应用服务中间件 容器
tomcat原理-3-Spring-boot-web中tomcat启动过程
spring-boot-web中tomcat的启动过程
1809 0
|
网络协议 Java 应用服务中间件
框架源码私享笔记(01)Tomcat核心架构功能 | 配置详解
本文首先分享了《活出意义来》一书序言中的感悟,强调成功如同幸福,不是刻意追求就能得到,而是全心投入时的副产品。接着探讨了Tomcat的核心功能与架构解析,包括网络连接器(Connector)和Servlet容器(Container),并介绍了其处理HTTP请求的工作流程。文章还详细解释了Tomcat的server.xml配置文件,涵盖了从顶级容器Server到子组件Connector、Engine、Host、Context等的配置参数及作用,帮助读者理解Tomcat的内部机制和配置方法。
|
Java 应用服务中间件 Linux
在Java 12环境中配置和部署Apache Tomcat的步骤。
这段部署Tomcat的冒险旅程充满技术挑战,但同时也像游戏一样充满乐趣。它需要你提前准备,仔细执行,并随时准备解决意外情况。成功后,你就可以在这匹强壮的网络野马上,带着你的Java应用,冲向Web开发的璀璨星空。
446 56
|
安全 应用服务中间件 网络安全
Tomcat如何配置PFX证书?
【10月更文挑战第2天】Tomcat如何配置PFX证书?
952 7
|
存储 算法 应用服务中间件
Tomcat如何配置JKS证书?
【10月更文挑战第2天】Tomcat如何配置JKS证书?
1515 4
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
2102 5
|
网络协议 Java 应用服务中间件
tomcat配置域名及HTTPS
tomcat配置域名及HTTPS
1210 1