Spring Boot展開jarとwarの違いを詳しく説明します。
本論文ではSpring Bootの展開jarとwarの違いを紹介します。
1、packagingの方式は違っています。一つはjarに設定されています。一つはwarです。
Apple.javaはSpring BootServletInitializerを継承する必要がありますが、jarパッケージは必要ありません。
以下はwar継承の方式です。
springbootにはtomcat容器が内蔵されていますが、デフォルトではtomcat 8のバージョン、warパッケージが展開されている場合、pomファイルにtomcatと関係があるjarパッケージのscopeをprovidedに設定する必要があります。
スプリングブックに内蔵されているtomcatコードを削除します。
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>
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。