程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

Springboot打war包部署

发布于2020-11-19 20:39     阅读(1378)     评论(0)     点赞(5)     收藏(4)


一、(重要) 与打jar包直接部署不同,需要在启动类上继承SpringBootServletInitializer类,并重写configure方法。
二、排除内置tomcat

详细:
  • 1、排除内置tomcat
<!-- 移除springboot中web模块的tomcat依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!--上下两种二选一,都可以达到同样的效果 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope><!-- 该依赖会参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作 -->
</dependency>
  • 2、继承SpringBootServletInitializer,重写configure方法。
>>>>>Before
@SpringBootApplication()
public class LocalserviceApplication {

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

}
>>>>>Before

变为:

@SpringBootApplication()
>>>>>>new
public class LocalserviceApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(LocalserviceApplication.class);
    }
<<<<<<new
    public static void main(String[] args) {
        SpringApplication.run(LocalserviceApplication.class, args);
    }
}

最后,将war包拖到webapps目录里面就行了。后缀为项目名(自动解压后的文件夹名)

server:
  port: 8080
  servlet:
    context-path: /prefix   <<<<该前缀在打成war包部署在tomcat后,失效
  • 3、jar包和war包启动区别

    • jar包:执行SpringBootApplication的run方法,启动IOC容器,然后创建嵌入式Servlet容器
    • war包: 先是启动Servlet服务器,服务器启动Springboot应用(springBootServletInitizer),然后启动IOC容器
  • 4、其他问题

    • 由于tomcat 10 的servlet规范等,由JAVA EE 8 变为了Jakarta EE 9;所以最新的tomcat10会出现问题。

    Servlet 5.0 API:Java包已从 javax.servlet 升级至 jakarta.servlet;

    • SpringBoot 1.x内置的tomcat 版本为8; SpringBoot 2.x内置的tomcat 版本为9; 所以tomcat 7 及以下,也不推荐尝试;

(完)



所属网站分类: 技术文章 > 博客

作者:java小王子

链接:http://www.javaheidong.com/blog/article/910/c68ce2d135020ebc97b4/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

5 0
收藏该文
已收藏

评论内容:(最多支持255个字符)