Spring Boot - Penerapan Tomcat
Dengan menggunakan aplikasi Spring Boot, kita dapat membuat file perang untuk disebarkan ke web server. Di bab ini, Anda akan mempelajari cara membuat file WAR dan menerapkan aplikasi Spring Boot di server web Tomcat.
Spring Boot Servlet Initializer
Cara penyebaran tradisional membuat Aplikasi Spring Boot @SpringBootApplication kelas memperpanjang SpringBootServletInitializerkelas. File kelas Spring Boot Servlet Initializer memungkinkan Anda untuk mengkonfigurasi aplikasi saat diluncurkan dengan menggunakan Servlet Container.
Kode untuk file kelas Aplikasi Spring Boot untuk penyebaran file JAR diberikan di bawah ini -
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);
}
}
Kita perlu memperluas kelas SpringBootServletInitializeruntuk mendukung penyebaran file WAR. Kode file kelas Aplikasi Spring Boot diberikan di bawah ini -
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);
}
}
Mengatur Kelas Utama
Di Spring Boot, kita perlu menyebutkan kelas utama yang harus dimulai di file build. Untuk tujuan ini, Anda dapat menggunakan potongan kode berikut -
Untuk Maven, tambahkan kelas awal di pom.xml properti seperti yang ditunjukkan di bawah ini -
<start-class>com.tutorialspoint.demo.DemoApplication</start-class>
Untuk Gradle, tambahkan nama kelas utama di build.gradle seperti yang ditunjukkan di bawah ini -
mainClassName="com.tutorialspoint.demo.DemoApplication"
Perbarui kemasan JAR menjadi WAR
Kami harus memperbarui JAR kemasan menjadi WAR menggunakan potongan kode berikut -
Untuk Maven, tambahkan kemasan sebagai WAR in pom.xml seperti yang ditunjukkan di bawah ini -
<packaging>war</packaging>
Untuk Gradle, tambahkan plugin aplikasi dan plugin perang di file build.gradle seperti yang ditunjukkan di bawah ini -
apply plugin: ‘war’
apply plugin: ‘application’
Sekarang, mari kita tulis Rest Endpoint sederhana untuk mengembalikan string "Hello World from Tomcat". Untuk menulis Rest Endpoint, kita perlu menambahkan ketergantungan web starter Spring Boot ke dalam file build kita.
Untuk Maven, tambahkan dependensi starter Spring Boot di pom.xml menggunakan kode seperti yang ditunjukkan di bawah ini -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Untuk Gradle, tambahkan dependensi starter Spring Boot di build.gradle menggunakan kode seperti yang ditunjukkan di bawah ini -
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
}
Sekarang, tulis Rest Endpoint sederhana di file kelas Aplikasi Spring Boot menggunakan kode seperti yang ditunjukkan di bawah ini -
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";
}
}
Kemas Aplikasi Anda
Sekarang, buat file WAR untuk diterapkan ke server Tomcat dengan menggunakan perintah Maven dan Gradle untuk memaketkan aplikasi Anda seperti yang diberikan di bawah ini -
Untuk Maven, gunakan perintah mvn packageuntuk mengemas aplikasi Anda. Kemudian, file WAR akan dibuat dan Anda dapat menemukannya di direktori target seperti yang ditunjukkan pada tangkapan layar yang diberikan di bawah ini -
Untuk Gradle, gunakan perintah gradle clean builduntuk mengemas aplikasi Anda. Kemudian, file WAR Anda akan dibuat dan Anda dapat menemukannya di bawahbuild/libsdirektori. Amati tangkapan layar yang diberikan di sini untuk pemahaman yang lebih baik -
Terapkan ke Tomcat
Sekarang, jalankan Server Tomcat, dan terapkan file WAR di bawah webappsdirektori. Amati tangkapan layar yang ditampilkan di sini untuk pemahaman yang lebih baik -
Setelah penerapan berhasil, tekan URL di browser web Anda http://localhost:8080/demo-0.0.1-SNAPSHOT/ dan amati bahwa hasilnya akan terlihat seperti yang ditunjukkan pada gambar di bawah ini -
Kode lengkap untuk tujuan ini diberikan di bawah ini.
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')
}
Kode untuk file kelas aplikasi Spring Boot utama diberikan di bawah ini -
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";
}
}