Spring Boot 部署过程解析(jar or war)
前言
对于传统的ssm或者ssh项目的部署,一般会打包成war包,或者是一个编译好的文件夹,再放到tomcat的webapps目录下,如果是war包,会自动解压出来。而SpringBoot默认会内嵌一个Tomcat,因此即便是web项目也可以直接打包成jar包,直接java-jar运行就可以了。
用SpringInitialzr创建的web项目(选择打包成jar),只会有一个spring-boot-starter-web依赖。
org.springframework.boot spring-boot-starter-web
跟进去可以发现这个依赖包括了spring-boot-starter-tomcat这个(内嵌tomcat的依赖包)。如果使用内部的tomcat部署,那么不需要对代码进行修改,直接runxxApplication下的Main方法。
如果创建的是war的web项目,默认会多一个ServletInitializer文件,maven会多一个spring-boot-starter-tomcat依赖。war的项目,既可以用Main方法启动,也可以用外部的tomcat启动。
这样看来没有任何问题,如果之前建工程用的是jar,最终需要用外部tomcat部署的,只需要进行如下修改:
//1.添加一个ServletInitializer.java //2.Maven中添加war 。(默认是jar) //3.添加spring-boot-starter-tomcat依赖。(测试过,不加也没关系,但是既然SpringInitialzr创建时就自带了,还是加上好了)
如果你用的是JSP,或许会有一些小问题。
一般博客都会写,如果需要用到JSP,需要添加个依赖tomcat-embed-jasper:
org.apache.tomcat.embed tomcat-embed-jasper provided
需要特别注意的是:
虽然spring-boot-starter-web内嵌tomcat,但是,内嵌的spring-boot-starter-tomcat仅仅包含了tomcat-embed-core,而不包含tomcat-embed-jasper。因此需要单独添加该依赖。
使用外部tomcat部署,并且用到了JSP的,需要有以下配置:
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.apache.tomcat.embed tomcat-embed-jasper provided
总结
- 默认目前一般都直接打成jar包进行部署。
- 如果需要部署war包的,最简单的方法就是pom中加上war,以及添加ServletInitializer文件(必须)。
- 如果有需要JSP的,添加tomcat-embed-jasper和其他需要的依赖。
- 至于上文中或者其他博客上提到的,需要在web包中排除tomcat,或者jasper的scope必须是provided,其实经过测试,改了和没改都一样。(没发生冲突的话,无关紧要;出错了,特别注意这里两个地方就可以了)
参考文献
springbootembeddedtomcatandtomcat-embed-jasper
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。