Spring Boot展開jarとwarの違いを詳しく説明します。


本論文ではSpring Bootの展開jarとwarの違いを紹介します。
1、packagingの方式は違っています。一つはjarに設定されています。一つはwarです。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>cn.vcyber.www</groupId>
  <artifactId>vcyber-api</artifactId>
  <!--         -->
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>vcyber-api</name>
  <url>http://maven.apache.org</url>
2、継承の仕方が違います。
Apple.javaはSpring BootServletInitializerを継承する必要がありますが、jarパッケージは必要ありません。
以下はwar継承の方式です。

@SpringBootApplication
@RestController
public class Application extends SpringBootServletInitializer{
  public static void main(String[] args) {
    SpringApplication.run(Application.class,args);
  }

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

3、スプリングブックにtomcatを内蔵しています。
springbootにはtomcat容器が内蔵されていますが、デフォルトではtomcat 8のバージョン、warパッケージが展開されている場合、pomファイルにtomcatと関係があるjarパッケージのscopeをprovidedに設定する必要があります。
スプリングブックに内蔵されているtomcatコードを削除します。

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <exclusions>
        <exclusion>
          <artifactId>log4j-over-slf4j</artifactId>
          <groupId>org.slf4j</groupId>
        </exclusion>
        <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>
    </dependency>
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。