凌峰创科服务平台

spring boot 服务器

  1. Spring Boot 是什么? 它如何帮助我们构建服务器?
  2. 如何使用 Spring Boot 创建和运行一个服务器?

下面我将从这两个层面,由浅入深地进行详细解释。

spring boot 服务器-图1
(图片来源网络,侵删)

第一部分:Spring Boot 是什么?它如何成为一个服务器?

一个非常重要的概念澄清:Spring Boot 本身不是一个服务器

  • 服务器:是一个运行环境,负责接收客户端的请求、处理并返回响应,Tomcat、Jetty、Undertow 都是知名的服务器(也称为 Servlet 容器)。
  • Spring Boot:是一个框架,它的核心目标是简化创建和运行生产级 Spring 应用程序的过程。

Spring Boot 如何“变成”一个服务器呢?答案是:内嵌服务器

Spring Boot 的一个革命性特性就是自动配置起步依赖,这意味着:

  • 你无需手动下载、配置和集成 Tomcat 或 Jetty 等服务器。
  • 你只需要在你的项目依赖中引入 spring-boot-starter-web,Spring Boot 就会自动为你下载并配置好一个内嵌的 Tomcat 服务器(默认是 Tomcat)。
  • 你只需要写你的业务逻辑代码,然后运行你的 Java 主程序,Spring Boot 就会自动启动这个内嵌的服务器,让你的应用程序 ready to serve。

总结一下:你用 Spring Boot 框架构建的是一个应用程序,而这个应用程序在运行时,会“自带”一个内嵌的服务器(如 Tomcat),因此从外部看来,它就是一个完整的服务。

spring boot 服务器-图2
(图片来源网络,侵删)

第二部分:如何使用 Spring Boot 创建一个服务器(一个 Web 应用)

下面我们通过一个最经典的 "Hello, World!" 示例,来展示如何用 Spring Boot 搭建一个简单的 Web 服务器。

步骤 1:环境准备

确保你已经安装了以下软件:

  • JDK 8 或更高版本
  • MavenGradle(项目构建工具,这里以 Maven 为例)
  • 一个你喜欢的 IDE(如 IntelliJ IDEA 或 VS Code)

步骤 2:创建 Spring Boot 项目

有几种方式可以创建项目:

使用 Spring Initializr(最推荐)

  1. 访问 https://start.spring.io/
  2. 配置项目参数:
    • Project: Maven Project
    • Language: Java
    • Spring Boot: 选择一个稳定的版本(如 3.x.x)
    • Project Metadata:
      • Group: com.example
      • Artifact: demo
      • Name: demo
      • Packaging: Jar
      • Java: 选择你的 JDK 版本
    • Dependencies: 在依赖搜索框中输入 Spring Web,然后点击 Add,这会自动添加 spring-boot-starter-web 依赖。
  3. 点击 GENERATE 按钮,下载生成的 demo.zip 压缩包。
  4. 将压缩包解压,并用你的 IDE 打开这个项目。

使用 IDE 的内置工具

IntelliJ IDEA 和 VS Code 都有内置的 Spring Initializr 向导,可以让你在 IDE 内直接完成项目创建。

步骤 3:编写代码

项目创建好后,你会看到一个类似下面的文件结构:

demo
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── example
    │   │           └── demo
    │   │               └── DemoApplication.java  <-- 主程序入口
    │   └── resources
    │       ├── application.properties
    │       └── static
    │       └── templates
    └── test
        └── java
            └── com
                └── example
                    └── demo
                        └── DemoApplicationTests.java
  1. 主程序入口 (DemoApplication.java)

    这个文件已经自动生成了,你不需要修改它。@SpringBootApplication 是一个核心注解,它组合了 @Configuration, @EnableAutoConfiguration, 和 @ComponentScan,告诉 Spring Boot 这是一个启动类。

    package com.example.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);
        }
    }
  2. 创建一个 Web 控制器

    src/main/java/com/example/demo 目录下,创建一个新文件 HelloController.java

    package com.example.demo;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    // @RestController 是一个组合注解,相当于 @Controller + @ResponseBody
    // 它告诉 Spring 这个类中的所有方法返回的数据都直接作为 HTTP 响体的内容
    @RestController
    public class HelloController {
        // @GetMapping 是一个组合注解,相当于 @RequestMapping(method = RequestMethod.GET)
        // 它将 HTTP GET 请求映射到该方法
        @GetMapping("/hello")
        public String sayHello() {
            return "Hello, Spring Boot Server!";
        }
    }

步骤 4:运行服务器

  1. 在 IDE 中找到 DemoApplication.java 文件。

  2. 右键点击,选择 Run 'DemoApplication.main()'

  3. 你会看到控制台输出一堆日志,最后会看到类似下面的信息,这表示内嵌的 Tomcat 服务器已经成功启动:

    ...
    .   ____          _            __ _ _
    /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
    \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
     '  |____| .__|_| |_|_| |_\__, | / / / /
    =========|_|==============|___/=/_/_/_/
    :: Spring Boot ::                :: v3.1.0 ::
    ... (更多日志)
    Tomcat started on port(s): 8080 (http) with context path ''
    ... (更多日志)
    • Tomcat started on port(s): 8080:说明服务器正在 8080 端口监听请求。
    • with context path '':说明应用的上下文路径是根路径。

步骤 5:测试你的服务器

打开你的浏览器或使用 API 工具(如 Postman、curl),访问以下 URL:

http://localhost:8080/hello

你将会在浏览器中看到:

Hello, Spring Boot Server!

恭喜! 你已经成功用 Spring Boot 创建并运行了一个自己的 Web 服务器!


第三部分:深入理解 Spring Boot 服务器的核心概念

服务器端口和上下文路径

默认情况下,Spring Boot 服务器运行在 8080 端口,上下文路径为空,你可以在 src/main/resources/application.properties 文件中轻松修改这些配置:

# 设置服务器端口为 9090
server.port=9090
# 设置上下文路径为 /myapi
server.servlet.context-path=/myapi

修改后,你需要重新启动服务器,访问地址就变成了:

http://localhost:9090/myapi/hello

切换内嵌服务器

Spring Boot 默认使用 Tomcat,但你也可以轻松切换到 Jetty 或 Undertow。

  • 切换到 Jetty

    pom.xml 中,排除 Tomcat 依赖,并添加 Jetty 依赖:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 排除默认的 Tomcat -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 添加 Jetty 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>
        <!-- 其他依赖... -->
    </dependencies>

打包成可执行 JAR

Spring Boot 项目可以非常方便地打包成一个可执行的 JAR 文件,这个 JAR 文件包含了你的所有代码以及内嵌的服务器。

  1. pom.xml 中添加 spring-boot-maven-plugin(通常新项目已经自动配置好了):

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
  2. 在项目根目录下,通过命令行执行 Maven 打包命令:

    mvn clean package
  3. 打包成功后,你会在 target 目录下找到一个名为 demo-0.0.1-SNAPSHOT.jar 的文件。

  4. 你可以通过 java -jar 命令在任何安装了 JDK 的机器上运行它,无需额外安装 Tomcat:

    java -jar target/demo-0.0.1-SNAPSHOT.jar

    这就是 Spring Boot “开箱即用”“约定优于配置” 理念的完美体现。


  • Spring Boot 是一个框架,不是服务器。 它通过内嵌服务器(如 Tomcat)让你可以轻松地运行一个 Web 应用。
  • 核心优势:极大地简化了 Java Web 应用的开发、配置和部署过程,你只需要关注业务逻辑,而不是繁琐的服务器配置。
  • 关键特性:自动配置、起步依赖、内嵌服务器、可执行 JAR。
  • 学习路径:掌握 Spring Boot 是现代 Java 后端开发的重要一步,在理解了上述基础后,你可以继续学习 Spring Boot 的更多高级特性,如:
    • 数据访问:使用 Spring Data JPA、MyBatis 等。
    • 安全:使用 Spring Security。
    • 测试:使用 Spring Boot Test。
    • 监控:使用 Actuator。
    • 微服务:与 Spring Cloud 结合构建分布式系统。
分享:
扫描分享到社交APP
上一篇
下一篇