zoukankan      html  css  js  c++  java
  • Spring Boot 学习系列(03)—jar or war,做出你的选择

    此文已由作者易国强授权网易云社区发布。

    欢迎访问网易云社区,了解更多网易技术产品运营经验。


    两种打包方式

    • 采用Spring Boot框架来构建项目,我们对项目的打包有两种方式可供选择,一种仍保持原有的方式不变,package一个war包放置到外置的应用容器中;另一种则是直接打包成一个jar包,这个jar包里面包含了内置的应用容器,可以通过Java命令直接启动运行。

    jar包方式

    • 对于jar包的方式,前面文章的示例中其实我们就是采用的此种方式,使用方式不再赘述。

    war包方式

    • 如果采用war包的方式,其实也很简单,我们仅仅需要变更下配置即可,具体操作如下所示:

      1. 将pom.xml文件中打包方式变更成war

         <groupId>com.example.future</groupId>
         <artifactId>bingo</artifactId>
         <version>0.0.1-SNAPSHOT</version>
         <packaging>war</packaging>
      2. 变更内置容器(默认tomcat)的作用范围为provided,这样在打包时就不会将内嵌的容器打入war包中。在依赖中加入如下内容:

         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-tomcat</artifactId>
             <scope>provided</scope>
         </dependency>
      3. 自定义一个servlet初始化类,继承SpringBootServletInitializer类,如下所示:

             package com.example.future;     import org.springframework.boot.builder.SpringApplicationBuilder;     import org.springframework.boot.web.support.SpringBootServletInitializer;     /**
              * @author future
              */
             public class ServletInitializer extends SpringBootServletInitializer {         @Override
                 protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {             return application.sources(BingoApplication.class);
                 }
             }
      4. 通过以上步骤即可完成war包方式的改写。我们再执行package命令时,在target目录下生成的即为项目war包了。




    打包方式的选择


    • 具体的打包方式可以根据我们项目的实际需求以及运维现状来决定。显而易见的,如果采用jar包的方式进行部署,那么对于容器(如tomcat)的管理,开发人员可以介入其中自行维护,部署也相对简单些。当然,若需要运维在外部配置指定也是可以的,在使用java命令启动打好的jar包时指定运行参数即可。


    • 不足之处,欢迎指正,谢谢~


    免费体验云安全(易盾)内容安全、验证码等服务

    更多网易技术、产品、运营经验分享请点击


    相关文章:
    【推荐】 视觉设计师的进化
    【推荐】 canvas 动画库 CreateJs 之 EaselJS(上篇)

  • 相关阅读:
    Yield Usage Understanding
    Deadclock on calling async methond
    How to generate file name according to datetime in bat command
    Run Unit API Testing Which Was Distributed To Multiple Test Agents
    druid的关键参数+数据库连接池运行原理
    修改idea打开新窗口的默认配置
    spring boot -thymeleaf-url
    @pathvariable和@RequestParam的区别
    spring boot -thymeleaf-域对象操作
    spring boot -thymeleaf-遍历list和map
  • 原文地址:https://www.cnblogs.com/zyfd/p/9881236.html
Copyright © 2011-2022 走看看