SpringBootServletInitializer
上次修改时间:2023 年 7 月 23 日
在本文中,我们将展示如何从传统的 WAR 部署方式部署 Spring Boot 应用程序。
目前的趋势是从可执行 JAR 部署 Spring Boot 应用程序。(有关如何从 JAR 启动简单 Web 应用程序的详细信息,请参阅 Spring Boot 第一个 Web 应用程序。)
Spring 是一个流行的 Java 应用程序框架。Spring Boot 旨在以最小的努力创建独立的、生产级的基于 Spring 的应用程序。
SpringBootServletInitializer
SpringBootServletInitializer 是一个接口,用于从传统的 WAR 部署运行 SpringApplication。它将应用程序上下文中的 Servlet、Filter 和 ServletContextInitializer 豆绑定到服务器。
SpringBootServletInitializer 示例
该应用程序创建一个简单的 Spring Boot RESTful 应用程序,并将其打包成一个 WAR 文件。
build.gradle
...
src
├───main
│ ├───java
│ │ └───com
│ │ └───zetcode
│ │ │ Application.java
│ │ └───controller
│ │ MyController.java
│ └───resources
└───test
└───java
这是项目结构。
plugins {
id 'org.springframework.boot' version '3.1.1'
id 'io.spring.dependency-management' version '1.1.0'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
}
这是 Gradle 构建文件。spring-boot-starter-web 是一个启动器,用于构建 Web 应用程序,包括使用 Spring MVC 的 RESTful 应用程序。
应用程序被打包成一个 WAR 文件。
package com.zetcode.controller;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@GetMapping(value = "/", produces = MediaType.TEXT_PLAIN_VALUE)
public String index() {
return "Hello there";
}
}
这是 Spring Boot Web 应用程序的控制器类。控制器使用 @RestController 注解进行修饰。
@GetMapping(value = "/", produces = MediaType.TEXT_PLAIN_VALUE)
public String index() {
return "Hello there";
}
对主页的 GET 请求返回一个字符串。绑定使用 @GetMapping 完成。
package com.zetcode;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Application 设置 Spring Boot 应用程序。它继承自 SpringBootServletInitializer,以便它可以作为 WAR 部署。
该应用程序既可以通过在 Tomcat 服务器上部署 WAR 运行,也可以通过将其作为具有嵌入式 Tomcat 的自执行 Web 存档来执行。
在本文中,我们创建了第一个可从传统 WAR 部署的 Spring Boot Web 应用程序。