Spring Boot - wdrożenie Tomcat
Korzystając z aplikacji Spring Boot, możemy stworzyć plik wojenny do wdrożenia na serwerze WWW. W tym rozdziale dowiesz się, jak utworzyć plik WAR i wdrożyć aplikację Spring Boot na serwerze WWW Tomcat.
Spring Boot Servlet Initializer
Tradycyjnym sposobem wdrażania jest tworzenie aplikacji Spring Boot @SpringBootApplication rozszerz klasę SpringBootServletInitializerklasa. Plik klasy Spring Boot Servlet Initializer umożliwia skonfigurowanie aplikacji podczas jej uruchamiania przy użyciu kontenera serwletów.
Kod dla pliku klasy aplikacji Spring Boot Application do wdrożenia pliku JAR jest podany poniżej -
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);
}
}
Musimy rozszerzyć klasę SpringBootServletInitializerdo obsługi wdrażania pliku WAR. Kod pliku klasy Spring Boot Application podano poniżej -
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);
}
}
Ustawianie klasy głównej
W Spring Boot musimy wspomnieć o głównej klasie, która powinna rozpocząć się w pliku kompilacji. W tym celu możesz użyć następujących fragmentów kodu -
W przypadku Mavena dodaj klasę początkową w pom.xml właściwości, jak pokazano poniżej -
<start-class>com.tutorialspoint.demo.DemoApplication</start-class>
W przypadku Gradle dodaj nazwę klasy głównej do pliku build.gradle, jak pokazano poniżej -
mainClassName="com.tutorialspoint.demo.DemoApplication"
Zaktualizuj pakiet JAR do WAR
Musimy zaktualizować JAR opakowania do WAR, używając następujących fragmentów kodu -
W przypadku Mavena dodaj opakowanie jako WAR in pom.xml jak pokazano poniżej -
<packaging>war</packaging>
W przypadku Gradle dodaj wtyczkę aplikacji i wtyczkę wojny do pliku build.gradle jak pokazano poniżej -
apply plugin: ‘war’
apply plugin: ‘application’
Teraz napiszmy prosty punkt końcowy odpoczynku, aby zwrócić ciąg „Hello World from Tomcat”. Aby napisać punkt końcowy Rest, musimy dodać zależność startera sieci Web Spring Boot do naszego pliku kompilacji.
W przypadku Maven dodaj zależność startera Spring Boot w pom.xml, używając kodu, jak pokazano poniżej -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
W przypadku Gradle Dodaj zależność startera Spring Boot w build.gradle używając kodu, jak pokazano poniżej -
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
}
Teraz napisz prosty punkt końcowy Rest w pliku klasy Spring Boot Application, używając kodu, jak pokazano poniżej -
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";
}
}
Pakowanie aplikacji
Teraz utwórz plik WAR do wdrożenia na serwerze Tomcat, używając poleceń Maven i Gradle do pakowania aplikacji, jak podano poniżej -
W przypadku Mavena użyj polecenia mvn packagedo pakowania aplikacji. Następnie zostanie utworzony plik WAR i można go znaleźć w katalogu docelowym, jak pokazano na zrzutach ekranu podanych poniżej -
W przypadku Gradle użyj polecenia gradle clean builddo pakowania aplikacji. Następnie twój plik WAR zostanie utworzony i możesz go znaleźć podbuild/libsinformator. Zobacz zrzuty ekranu podane tutaj, aby lepiej zrozumieć -
Wdróż w Tomcat
Teraz uruchom serwer Tomcat i wdróż plik WAR w webappsinformator. Obserwuj zrzuty ekranu pokazane tutaj, aby lepiej zrozumieć -
Po pomyślnym wdrożeniu kliknij adres URL w przeglądarce internetowej http://localhost:8080/demo-0.0.1-SNAPSHOT/ i zwróć uwagę, że wynik będzie wyglądał tak, jak pokazano na zrzucie ekranu podanym poniżej -
Pełny kod do tego celu znajduje się poniżej.
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')
}
Kod głównego pliku klasy aplikacji Spring Boot jest podany poniżej -
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";
}
}