Spring Boot - Déploiement de Tomcat

En utilisant l'application Spring Boot, nous pouvons créer un fichier war à déployer sur le serveur Web. Dans ce chapitre, vous allez apprendre à créer un fichier WAR et à déployer l'application Spring Boot sur le serveur Web Tomcat.

Initialiseur de servlet Spring Boot

Le moyen traditionnel de déploiement consiste à créer l'application Spring Boot @SpringBootApplication classe étendre la SpringBootServletInitializerclasse. Le fichier de classe Spring Boot Servlet Initializer vous permet de configurer l'application lorsqu'elle est lancée à l'aide de Servlet Container.

Le code du fichier de classe Spring Boot Application pour le déploiement de fichiers JAR est donné ci-dessous -

package com.tutorialspoint.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

Nous devons étendre la classe SpringBootServletInitializerpour prendre en charge le déploiement de fichiers WAR. Le code du fichier de classe Spring Boot Application est donné ci-dessous -

package com.tutorialspoint.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

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

Définition de la classe principale

Dans Spring Boot, nous devons mentionner la classe principale qui doit démarrer dans le fichier de construction. Pour cela, vous pouvez utiliser les morceaux de code suivants -

Pour Maven, ajoutez la classe de départ dans pom.xml propriétés comme indiqué ci-dessous -

<start-class>com.tutorialspoint.demo.DemoApplication</start-class>

Pour Gradle, ajoutez le nom de la classe principale dans build.gradle comme indiqué ci-dessous -

mainClassName="com.tutorialspoint.demo.DemoApplication"

Mettre à jour le package JAR dans WAR

Nous devons mettre à jour l'emballage JAR dans WAR en utilisant les morceaux de code suivants -

Pour Maven, ajoutez l'emballage en tant que WAR dans pom.xml comme indiqué ci-dessous -

<packaging>war</packaging>

Pour Gradle, ajoutez le plugin d'application et le plugin war dans le build.gradle comme indiqué ci-dessous -

apply plugin: ‘war’
apply plugin: ‘application’

Maintenant, écrivons un simple point de terminaison de repos pour renvoyer la chaîne «Hello World from Tomcat». Pour écrire un point de terminaison de repos, nous devons ajouter la dépendance de démarrage Web Spring Boot dans notre fichier de construction.

Pour Maven, ajoutez la dépendance de démarrage Spring Boot dans pom.xml en utilisant le code comme indiqué ci-dessous -

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Pour Gradle, ajoutez la dépendance de démarrage Spring Boot dans build.gradle en utilisant le code comme indiqué ci-dessous -

dependencies {
   compile('org.springframework.boot:spring-boot-starter-web')
}

Maintenant, écrivez un simple point de terminaison de repos dans le fichier de classe Spring Boot Application en utilisant le code comme indiqué ci-dessous -

package com.tutorialspoint.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DemoApplication  extends SpringBootServletInitializer {
   @Override
   protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
      return application.sources(DemoApplication.class);
   }
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
   
   @RequestMapping(value = "/")
   public String hello() {
      return "Hello World from Tomcat";
   }
}

Emballage de votre application

Maintenant, créez un fichier WAR à déployer sur le serveur Tomcat en utilisant les commandes Maven et Gradle pour empaqueter votre application comme indiqué ci-dessous -

Pour Maven, utilisez la commande mvn packagepour emballer votre application. Ensuite, le fichier WAR sera créé et vous pouvez le trouver dans le répertoire cible comme indiqué dans les captures d'écran ci-dessous -

Pour Gradle, utilisez la commande gradle clean buildpour emballer votre application. Ensuite, votre fichier WAR sera créé et vous pourrez le trouver sousbuild/libsannuaire. Observez les captures d'écran données ici pour une meilleure compréhension -

Déployer dans Tomcat

Maintenant, exécutez le serveur Tomcat et déployez le fichier WAR sous le webappsannuaire. Observez les captures d'écran présentées ici pour une meilleure compréhension -

Une fois le déploiement réussi, appuyez sur l'URL dans votre navigateur Web http://localhost:8080/demo-0.0.1-SNAPSHOT/ et observez que la sortie ressemblera à celle illustrée dans la capture d'écran ci-dessous -

Le code complet à cet effet est donné ci-dessous.

pom.xml

<?xml version = "1.0" encoding = "UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

   <groupId>com.tutorialspoint</groupId>
   <artifactId>demo</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>demo</name>
   <description>Demo project for Spring Boot</description>
   
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.5.8.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>

   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
      <start-class>com.tutorialspoint.demo.DemoApplication</start-class>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>
   
</project>

build.gradle

buildscript {
   ext {
      springBootVersion = '1.5.8.RELEASE'
   }
   repositories {
      mavenCentral()
   }
dependencies {
      classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
   }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'war'
apply plugin: 'application'

group = 'com.tutorialspoint'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
mainClassName = "com.tutorialspoint.demo.DemoApplication"

repositories {
   mavenCentral()
}
dependencies {
   compile('org.springframework.boot:spring-boot-starter-web')
   testCompile('org.springframework.boot:spring-boot-starter-test')
}

Le code du fichier de classe d'application Spring Boot principal est donné ci-dessous -

package com.tutorialspoint.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DemoApplication  extends SpringBootServletInitializer {
   @Override
   protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
      return application.sources(DemoApplication.class);
   }
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
   
   @RequestMapping(value = "/")
   public String hello() {
      return "Hello World from Tomcat";
   }
}