Springboot项目部署到外部Tomcat

前言:用过Springboot的同学都知道,Springboot采用了约定大于配置的思想,提供了大量简化配置的操作,使得我们从繁重的SpringMVC项目配置中解脱出来,只需要在.properties或者.yml文件上给指定的参数配置适当参数值即可,然后Springboot会自动应用;个人认为Springboot的优势在于提供快速便捷的开发模式,比如快速开发服务接口,通过mvn打包成jar包,然后通过java -jar命令行的方式(内置服务器)启动服务,这是正确的应用之道;Springboot同样支持web项目(包含各种html、css、js等前端资源)的开发和部署到外部服务器,但此时就需要做适当调整;

去年接了个应用类项目,就手欠采用Springboot开发web项目,项目目录结构如下:Springboot项目部署到外部Tomcat_第1张图片

发过程中倒是方便无比,但部署时就需要打包成war包部署到外部服务器,就需要改动配置并做适当调整,本文以此为契机,记录下操作过程,方便自己以及后来者!

理清思路,有以下几个地方需要处理:

1、由于服务器上面使用的一般是war包,所以此处将项目打包方式由jar包->war包

2、使用外部服务器,所以去除Springboot内置的服务器

3、由于部分jar包在外部服务器已经包含了,所以适当去除

4、重点:Springboot项目启动时,会创建Spring容器,容器中包含大量的Servlet、Filter和Spring Beans对象,此时由于使用外部的服务器,所以我们需要将Spring容器中的对象绑定到服务器上,我们采用官方推荐的方式,让启动类继承SpringBootServletInitiallizer并重写configure方法,官方demo如下:

Springboot项目部署到外部Tomcat_第2张图片

下面开始,从创建一个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
            
        
    

Springboot项目部署到外部Tomcat_第3张图片

2、新建一个HelloController.java,代码如上所示,启动Springboot项目,测试下新建项目是否ok,结果如下:

Springboot项目部署到外部Tomcat_第4张图片

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
                    1.8
                
            
        
    

5、依次通过idea开发工具的maven工具类,依次执行以下1,2两个操作,得到war包,如图,这个就是我们要放到服务器中:

Springboot项目部署到外部Tomcat_第5张图片Springboot项目部署到外部Tomcat_第6张图片

6、找到一个tomcat服务器,将war包放到tomcat/webapps文件夹下面,启动服务器,服务器启动成功后,采用:服务器地址 + 端口 + war名称 + 接口名称,我的就是:http://localhost:8080/springboot-deploy/showDeploymentResult,结果如下:

Springboot项目部署到外部Tomcat_第7张图片

好了,转换成功!

 

你可能感兴趣的:(SpringBoot,JavaEE,tomcat)