spring boot项目在外部tomcat环境下部署

spring-boot默认提供内嵌的tomcat,所以打包直接生成jar包,用java -jar命令就可以启动。但是,有时候我们更希望一个tomcat来管理多个项目,这种情况下就需要项目是war格式的包而不是jar格式的包。spring-boot同样提供了解决方案,只需要简单的几步更改就可以了,这里提供maven项目的解决方法:

1.将项目的启动类Application.java继承SpringBootServletInitializer并重写configure方法

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }

}

2.在pom.xml文件中,project下面增加package标签

<packaging>war</packaging>

3.还是在pom.xml文件中,dependencies下面添加

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
</dependency>

这样,只需要以上3步就可以打包成war包,并且部署到tomcat中了。需要注意的是这样部署的request url需要在端口后加上项目的名字才能正常访问。spring-boot更加强大的一点就是:即便项目是以上配置,依然可以用内嵌的tomcat来调试,启动命令和以前没变,还是:mvn spring-boot:run。

如果需要在springboot中加上request前缀,需要在application.properties中添加server.contextPath=/prefix/即可。其中prefix为前缀名。这个前缀会在war包中失效,取而代之的是war包名称,如果war包名称和prefix相同的话,那么调试环境和正式部署环境就是一个request地址了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程坑太多

『中级篇』docker之java容器运行外置springboot-jar(番外篇)(79)

873
来自专栏Java架构沉思录

每天学点Linux命令之umask

在进入今天的主题之前,我们先来回顾一下Linux文件权限的相关知识点。Linux里的文件权限可分为3组,分别是文件拥有者、同个群组的其他用户、不同群组的其他用户...

921
来自专栏求索之路

GradleForAndroid笔记

就是一笔记,我看的英文版,里面纰漏应该比较多。方便自己记忆而已。 1.gradle的插件就是一系列可以被复用的构建项目的脚本,我们可以使用其中的task ...

3056
来自专栏Web项目聚集地

Linux养成计划(四)

Linux系统会内建 vi 文本编辑器,Vim具有程序编程的能力,可以看作是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计、补充代码、编译及...

671
来自专栏吴伟祥

Linux 文件基本属性 转

在当前目录下使用命令: ls -l,即可列出该目录下的所有文件,其第一列的第一个字母就包含了该文件的文件类型:

632
来自专栏张戈的专栏

Linux终端:用cat命令查看不可见字符

时常,某个程序或软件并没有语法错误,并且你检查它的相关内容也确实没有发现问题。这是因为你用普通文本编辑器软件来查看的时候,有许多字符没有显示出来,但在终端使用 ...

2595
来自专栏linux驱动个人学习

如何增加内核模块

Kconfig 1.先了解一下Kconfig的语法:  一个典型的内核配置菜单如下: menu "Network device support"  config...

2955
来自专栏WindCoder

windows的CMD下一些小操作总结

是的,没看错,之前一直在IDLE中运行的python,没配置python的环境变量,今天需要再次装个模块,在cmd中运行python命令时被提示不是内部命令一类...

481
来自专栏java小白

maven插件

1455
来自专栏Java3y

看完这篇Linux基本的操作就会了

2626

扫码关注云+社区