Khởi động mùa xuân - Triển khai Tomcat

Bằng cách sử dụng ứng dụng Spring Boot, chúng ta có thể tạo một tệp war để triển khai vào máy chủ web. Trong chương này, bạn sẽ tìm hiểu cách tạo tệp WAR và triển khai ứng dụng Spring Boot trong máy chủ web Tomcat.

Bộ khởi tạo Servlet Spring Boot

Cách triển khai truyền thống là tạo ứng dụng Spring Boot @SpringBootApplication mở rộng lớp học SpringBootServletInitializerlớp học. Tệp lớp Spring Boot Servlet Initializer cho phép bạn cấu hình ứng dụng khi nó được khởi chạy bằng cách sử dụng Servlet Container.

Mã cho tệp lớp Ứng dụng khởi động mùa xuân để triển khai tệp JAR được cung cấp dưới đây:

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);
   }
}

Chúng ta cần mở rộng lớp học SpringBootServletInitializerđể hỗ trợ triển khai tệp WAR. Mã của tệp lớp Ứng dụng Spring Boot được đưa ra dưới đây:

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);
   }
}

Đặt lớp chính

Trong Spring Boot, chúng ta cần đề cập đến lớp chính sẽ bắt đầu trong tệp xây dựng. Với mục đích này, bạn có thể sử dụng các đoạn mã sau:

Đối với Maven, hãy thêm lớp bắt đầu vào pom.xml thuộc tính như hình dưới đây -

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

Đối với Gradle, thêm tên lớp chính trong build.gradle như hình dưới đây:

mainClassName="com.tutorialspoint.demo.DemoApplication"

Cập nhật JAR đóng gói thành WAR

Chúng tôi phải cập nhật JAR đóng gói thành WAR bằng cách sử dụng các đoạn mã sau:

Đối với Maven, thêm bao bì là WAR trong pom.xml như hình dưới đây -

<packaging>war</packaging>

Đối với Gradle, hãy thêm plugin ứng dụng và plugin chiến tranh trong build.gradle như hình dưới đây -

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

Bây giờ, chúng ta hãy viết một Rest Endpoint đơn giản để trả về chuỗi “Hello World from Tomcat”. Để viết Rest Endpoint, chúng ta cần thêm phần phụ thuộc vào bộ khởi động web Spring Boot vào tệp xây dựng của chúng ta.

Đối với Maven, thêm phần phụ thuộc vào bộ khởi động Spring Boot trong pom.xml bằng cách sử dụng mã như hình dưới đây:

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

Đối với Gradle, hãy thêm phần phụ thuộc vào bộ khởi động Spring Boot trong build.gradle bằng cách sử dụng mã như hình dưới đây -

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

Bây giờ, viết một Rest Endpoint đơn giản trong tệp lớp Spring Boot Application bằng cách sử dụng mã như hình dưới đây -

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";
   }
}

Đóng gói ứng dụng của bạn

Bây giờ, hãy tạo tệp WAR để triển khai vào máy chủ Tomcat bằng cách sử dụng lệnh Maven và Gradle để đóng gói ứng dụng của bạn như được cung cấp bên dưới:

Đối với Maven, hãy sử dụng lệnh mvn packageđể đóng gói ứng dụng của bạn. Sau đó, tệp WAR sẽ được tạo và bạn có thể tìm thấy nó trong thư mục đích như được hiển thị trong ảnh chụp màn hình dưới đây:

Đối với Gradle, hãy sử dụng lệnh gradle clean buildđể đóng gói ứng dụng của bạn. Sau đó, tệp WAR của bạn sẽ được tạo và bạn có thể tìm thấy nó trongbuild/libsdanh mục. Quan sát ảnh chụp màn hình được cung cấp ở đây để hiểu rõ hơn -

Triển khai vào Tomcat

Bây giờ, hãy chạy Máy chủ Tomcat và triển khai tệp WAR trong webappsdanh mục. Quan sát ảnh chụp màn hình được hiển thị ở đây để hiểu rõ hơn -

Sau khi triển khai thành công, hãy nhấn vào URL trong trình duyệt web của bạn http://localhost:8080/demo-0.0.1-SNAPSHOT/ và quan sát rằng đầu ra sẽ trông như thể hiện trong ảnh chụp màn hình dưới đây -

Mã đầy đủ cho mục đích này được đưa ra dưới đây.

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')
}

Mã cho tệp lớp ứng dụng Spring Boot chính được cung cấp bên dưới:

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";
   }
}