springboot项目打成war包放入tomcat中运行的详细步骤
本篇内容介绍了“springboot项目打成war包放入tomcat中运行的详细步骤”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
成都创新互联公司自成立以来,一直致力于为企业提供从网站策划、网站设计、成都网站设计、做网站、电子商务、网站推广、网站优化到为企业提供个性化软件开发等基于互联网的全面整合营销服务。公司拥有丰富的网站建设和互联网应用系统开发管理经验、成熟的应用系统解决方案、优秀的网站开发工程师团队及专业的网站设计师团队。
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方法的原因了。
“springboot项目打成war包放入tomcat中运行的详细步骤”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
本文名称:springboot项目打成war包放入tomcat中运行的详细步骤
路径分享:http://scyanting.com/article/jsicco.html