SpringBoot-Jar和War

SpringBoot可以创建jar包工程,也可以创建war包工程。
如何创建Jar或War工程这里便不多说,网上有很多。这里介绍下他们的区别:

POM文件区别

  • packaging不同
    Jar工程对应jar,War工程对应war


    packaging区别
  • 依赖不同(特殊依赖)
    添加外置tomcat依赖,移除嵌入式Tomcat,否则打出的war包启动时会报错,如下:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <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>
    

    注意:tomcat-embed-jasper中scope必须是provided,因为SpringBootServletInitializer需要依赖 javax.servlet,而tomcat-embed-jasper下面的tomcat-embed-core中就有这个javax.servlet,如果没用provided,最终打好的war里面会有servlet-api这个jar,这样就会跟tomcat本身的冲突了

代码区别

创建的war工程会多一个文件,如下:

说明:SpringBootServletInitializer就是一个org.springframework.web.context.WebApplicationContext,容器启动时会调用其onStartup(ServletContext servletContext)方法,onStartup的核心方法就是createRootApplicationContext(servletContext),简单说就是通过SpringApplicationBuilder构建并封装SpringApplication对象,并最终调用SpringApplication的run方法的过程

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容