前言:用过Springboot的同学都知道,Springboot采用了约定大于配置的思想,提供了大量简化配置的操作,使得我们从繁重的SpringMVC项目配置中解脱出来,只需要在.properties或者.yml文件上给指定的参数配置适当参数值即可,然后Springboot会自动应用;个人认为Springboot的优势在于提供快速便捷的开发模式,比如快速开发服务接口,通过mvn打包成jar包,然后通过java -jar命令行的方式(内置服务器)启动服务,这是正确的应用之道;Springboot同样支持web项目(包含各种html、css、js等前端资源)的开发和部署到外部服务器,但此时就需要做适当调整;
去年接了个应用类项目,就手欠采用Springboot开发web项目,项目目录结构如下:
发过程中倒是方便无比,但部署时就需要打包成war包部署到外部服务器,就需要改动配置并做适当调整,本文以此为契机,记录下操作过程,方便自己以及后来者!
理清思路,有以下几个地方需要处理:
1、由于服务器上面使用的一般是war包,所以此处将项目打包方式由jar包->war包
2、使用外部服务器,所以去除Springboot内置的服务器
3、由于部分jar包在外部服务器已经包含了,所以适当去除
4、重点:Springboot项目启动时,会创建Spring容器,容器中包含大量的Servlet、Filter和Spring Beans对象,此时由于使用外部的服务器,所以我们需要将Spring容器中的对象绑定到服务器上,我们采用官方推荐的方式,让启动类继承SpringBootServletInitiallizer并重写configure方法,官方demo如下:
下面开始,从创建一个Springboot项目,到最终通过浏览器访问为止,步骤如下:
1、极简新建一个Springboot项目适当调整,新建完成后pom.xml和项目目录结构如下:
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.4.RELEASE
com.dongnao
springboot-tomcat-deployment-demo
0.0.1
jar
springboot-tomcat-deployment-demo
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-maven-plugin
2、新建一个HelloController.java,代码如上所示,启动Springboot项目,测试下新建项目是否ok,结果如下:
3、修改Springboot项目启动类,让该类继承SpringBootServletInitializer并重写configure方法,修改后代码如下:
package com.dongnao;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class SpringbootTomcatDeploymentDemoApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SpringbootTomcatDeploymentDemoApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SpringbootTomcatDeploymentDemoApplication.class);
}
}
4、修改pom.xml,修改项目打包方式,移除springboot内置tomcat服务器,适当调整tomcat的lib文件夹里面存在的,当项目里面却引用的,说白了就是既然tomcat服务器已经提供了某些通用jar包,那么咱们就在maven里面标识出来,修改后的pom.xml内容如下:
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.4.RELEASE
com.dongnao
springboot-tomcat-deployment-demo
0.0.1
war
springboot-tomcat-deployment-demo
Demo project for Spring Boot
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
provided
javax.servlet
javax.servlet-api
3.1.0
provided
jstl
jstl
1.2
taglibs
standard
1.1.2
springboot-deploy
org.apache.maven.plugins
maven-war-plugin
2.6
false
org.apache.maven.plugins
maven-compiler-plugin
3.1
1.8
5、依次通过idea开发工具的maven工具类,依次执行以下1,2两个操作,得到war包,如图,这个就是我们要放到服务器中:
6、找到一个tomcat服务器,将war包放到tomcat/webapps文件夹下面,启动服务器,服务器启动成功后,采用:服务器地址 + 端口 + war名称 + 接口名称,我的就是:http://localhost:8080/springboot-deploy/showDeploymentResult,结果如下:
好了,转换成功!