Spring Boot - Implementación de Tomcat
Al usar la aplicación Spring Boot, podemos crear un archivo war para implementar en el servidor web. En este capítulo, aprenderá a crear un archivo WAR e implementar la aplicación Spring Boot en el servidor web Tomcat.
Inicializador Spring Boot Servlet
La forma tradicional de implementación es hacer que la aplicación Spring Boot @SpringBootApplication clase extender el SpringBootServletInitializerclase. El archivo de clase Spring Boot Servlet Initializer le permite configurar la aplicación cuando se inicia utilizando Servlet Container.
El código para el archivo de clase de la aplicación Spring Boot para la implementación del archivo JAR se proporciona a continuación:
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);
}
}
Necesitamos extender la clase SpringBootServletInitializerpara admitir la implementación de archivos WAR. El código del archivo de clase de la aplicación Spring Boot se proporciona a continuación:
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);
}
}
Configuración de la clase principal
En Spring Boot, debemos mencionar la clase principal que debería comenzar en el archivo de compilación. Para este propósito, puede utilizar los siguientes fragmentos de código:
Para Maven, agregue la clase de inicio en pom.xml propiedades como se muestra a continuación -
<start-class>com.tutorialspoint.demo.DemoApplication</start-class>
Para Gradle, agregue el nombre de la clase principal en build.gradle como se muestra a continuación:
mainClassName="com.tutorialspoint.demo.DemoApplication"
Actualizar el paquete JAR en WAR
Tenemos que actualizar el paquete JAR a WAR utilizando los siguientes fragmentos de código:
Para Maven, agregue el empaque como WAR en pom.xml como se muestra a continuación -
<packaging>war</packaging>
Para Gradle, agregue el complemento de aplicación y el complemento de guerra en el build.gradle como se muestra a continuación -
apply plugin: ‘war’
apply plugin: ‘application’
Ahora, vamos a escribir un punto final de descanso simple para devolver la cadena "Hola mundo desde Tomcat". Para escribir un punto final de descanso, debemos agregar la dependencia del iniciador web Spring Boot en nuestro archivo de compilación.
Para Maven, agregue la dependencia de inicio de Spring Boot en pom.xml usando el código como se muestra a continuación:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Para Gradle, agregue la dependencia de inicio Spring Boot en build.gradle usando el código como se muestra a continuación -
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
}
Ahora, escriba un punto final de descanso simple en el archivo de clase de la aplicación Spring Boot usando el código como se muestra a continuación:
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";
}
}
Empaquetado de su aplicación
Ahora, cree un archivo WAR para implementarlo en el servidor Tomcat utilizando los comandos Maven y Gradle para empaquetar su aplicación como se indica a continuación:
Para Maven, use el comando mvn packagepara empaquetar su aplicación. Luego, se creará el archivo WAR y puede encontrarlo en el directorio de destino como se muestra en las capturas de pantalla que se muestran a continuación:
Para Gradle, usa el comando gradle clean buildpara empaquetar su aplicación. Luego, se creará su archivo WAR y podrá encontrarlo enbuild/libsdirectorio. Observe las capturas de pantalla que se proporcionan aquí para una mejor comprensión:
Implementar en Tomcat
Ahora, ejecute el servidor Tomcat e implemente el archivo WAR en el webappsdirectorio. Observe las capturas de pantalla que se muestran aquí para una mejor comprensión:
Después de una implementación exitosa, presione la URL en su navegador web http://localhost:8080/demo-0.0.1-SNAPSHOT/ y observe que la salida se verá como se muestra en la captura de pantalla que se muestra a continuación:
El código completo para este propósito se proporciona a continuación.
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')
}
El código para el archivo de clase de la aplicación Spring Boot principal se proporciona a continuación:
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";
}
}