ZetCode

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

这是项目结构。

build.gradle
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 文件。

com/zetcode/controller/MyController.java
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 完成。

com/zetcode/Application.java
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 应用程序。

作者

我叫 Jan Bodnar,是一位充满激情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。 迄今为止,我撰写了超过 1,400 篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出 所有 Spring Boot 教程