# 教程：探索 Spring 支持功能

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com.cn/help/idea/llms.txt).

> **TL;DR**
> 所需插件：  Spring  和  Spring Boot （已捆绑）

本教程在 [教程：创建您的第一个 Spring 应用程序](your-first-spring-application.html) 基础上进行了扩展，展示了 IntelliJ IDEA 如何帮助您编写代码、分析 Spring 应用程序并在运行时进行管理。 本教程假设您从一个使用 Spring Initializr 生成的简单 Spring Boot Maven 项目开始。 它应该已经有用于构建 Web 应用程序的 Spring Boot Starter Web 依赖项。

本教程引导您完成以下步骤：

* 为 JPA 和 H2 添加依赖项，使您的 Spring 应用程序能够存储和检索关系数据

* 编写并检查您的代码

* 运行您的应用程序并执行 HTTP 请求

* 添加 Spring Boot Actuator 以进行高级健康监测和端点分析

* 添加 Spring Boot Developer Tools 以加快应用程序更新

Procedure: 为 JPA 和 H2 添加依赖

[Spring Data JPA](https://spring.io/projects/spring-data-jpa) 模块提供了使用 Java Persistence API (JPA) 进行数据访问的支持。

[H2](https://www.h2database.com/) 是用 Java 编写的快速内存中 SQL 数据库。

1. 打开项目根目录中的  `pom.xml`  文件。

![项目根目录下的 pom.xml 文件](https://resources.jetbrains.com.cn/help/img/idea/2026.3/spring-support-tutorial-pom.png)

2. 在编辑器中打开  `pom.xml`  文件后，按 `Alt+Insert` (Windows), `⌘ N` (macOS), `⌃ N` (IntelliJ IDEA Classic (macOS)), `⌘ N` (macOS System Shortcuts), `Alt+Insert` (XWin), `Alt+Insert` (GNOME), `Alt+Insert` (KDE), `Alt+Insert` (Emacs), `Ctrl+N` (Sublime Text), `⌘ N` (Sublime Text (macOS)), `Ctrl+N` (Visual Studio), `⌘ N` (Visual Studio (macOS)), `Alt+Insert` (NetBeans), `Alt+Insert` (Eclipse), `⌘ N` (Eclipse (macOS)) 并选择   添加启动器  。

3. 在打开的窗口中，选择   Spring Data JPA   和   H2 数据库   依赖项。

* `org.springframework.boot:spring-boot-starter-data-jpa`

* `com.h2database:h2`

或者，您可以手动将这些依赖项添加到  `pom.xml` ：

```XML

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

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>


```

4. 在弹出窗口中点击 ![Sync Maven Changes 按钮](https://resources.jetbrains.com.cn/help/img/idea/2026.3/maven.images.expui.build.mavenLoadChanges.svg)，或按 `Ctrl+Shift+O` (Windows), `⌘ ⇧ I` (macOS), `⌘ ⇧ O` (IntelliJ IDEA Classic (macOS)), `⌘ ⇧ I` (macOS System Shortcuts), `Ctrl+Shift+O` (XWin), `Ctrl+Shift+O` (GNOME), `Ctrl+Shift+O` (KDE), `Ctrl+Shift+O` (Emacs), `Ctrl+Shift+O` (Sublime Text), `⌘ ⇧ I` (Sublime Text (macOS)), `Ctrl+Shift+O` (Visual Studio), `⌘ ⇧ I` (Visual Studio (macOS)), `Ctrl+Shift+O` (NetBeans), `Ctrl+Shift+O` (Eclipse), `Ctrl+Shift+O` (Eclipse (macOS)) 以同步更新后的项目结构。

Procedure: 创建一个将存储在数据库中的 JPA 实体

要为您的 Spring 应用程序定义数据模型，请创建一个 JPA 实体。 该应用程序将创建并存储具有 ID、名字和姓氏的  `Customer`  对象。

1. 在  `src/main/java/com/example/springboottutorial`  下创建  `Customer.java`  文件。

在   项目   工具窗口中，选择  `src/main/java/com/example/springboottutorial`  目录，然后从主菜单中选择  `文件｜新建｜Java 类​​.` （或按 `Alt+Insert` (Windows), `⌘ N` (macOS), `⌃ N` (IntelliJ IDEA Classic (macOS)), `⌘ N` (macOS System Shortcuts), `Alt+Insert` (XWin), `Alt+Insert` (GNOME), `Alt+Insert` (KDE), `Alt+Insert` (Emacs), `Ctrl+N` (Sublime Text), `⌘ N` (Sublime Text (macOS)), `Ctrl+N` (Visual Studio), `⌘ N` (Visual Studio (macOS)), `Alt+Insert` (NetBeans), `Alt+Insert` (Eclipse), `⌘ N` (Eclipse (macOS)) 并选择   Java 类  ）。 选择   类   并输入类的名称：  `Customer` 。

2. 修改默认模板，或将其替换为以下 Java 代码：

```JAVA
package com.example.springboottutorial;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class Customer {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    private String firstName;
    private String lastName;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}

```

`@Entity`  注解表示  `Customer`  类是一个 JPA 实体，应转换为数据库中的相应表。 IntelliJ IDEA 会在装订区域中使用 ![实体图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.icons.javaee.newui.persistenceEntity%4014x14.svg) 标明它。

`@Id`  注解表明  `id`  字段是对象的 ID。 IntelliJ IDEA 会在装订区域中使用 ![ID 图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.icons.javaee.newui.persistenceId%4014x14.svg) 标明它。 JPA 用  `@GeneratedValue`  告诉 ID 应该自动生成。

所有其他实体属性（  `firstName`  和  `lastName`  在我们的示例中）都在装订区域用 ![ID 图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.icons.javaee.newui.persistenceAttribute%4014x14.svg) 指定。 您可以用它在 [持久性视图](persistence-tool-window.html)中快速打开该属性。

Procedure: 创建一个存储库接口

Spring Data JPA 会在运行时根据此接口创建一个存储库实现。

1. 在  `src/main/java/com/example/springboottutorial`  下创建  `CustomerRepository.java`  文件。

在   项目   工具窗口中，选择  `src/main/java/com/example/springboottutorial`  目录，然后从主菜单中选择  `文件｜新建｜Java 类​​.` （或按 `Alt+Insert` (Windows), `⌘ N` (macOS), `⌃ N` (IntelliJ IDEA Classic (macOS)), `⌘ N` (macOS System Shortcuts), `Alt+Insert` (XWin), `Alt+Insert` (GNOME), `Alt+Insert` (KDE), `Alt+Insert` (Emacs), `Ctrl+N` (Sublime Text), `⌘ N` (Sublime Text (macOS)), `Ctrl+N` (Visual Studio), `⌘ N` (Visual Studio (macOS)), `Alt+Insert` (NetBeans), `Alt+Insert` (Eclipse), `⌘ N` (Eclipse (macOS)) 并选择   Java 类  ）。 选择   界面  并输入接口名称：  `CustomerRepository` 。

2. 修改默认模板，或将其替换为以下 Java 代码：

```JAVA

package com.example.springboottutorial;

import org.springframework.data.repository.CrudRepository;

public interface CustomerRepository extends CrudRepository<Customer, Integer> {

    Customer findCustomerById(Integer id);
}


```

此存储库适用于  `Customer` 实体和  `Integer`  IDs。 它还声明了  `findCustomerById()`  方法。 Spring Data JPA 将基于此方法的签名派生出一个查询，该查询将为指定的 ID 选择  `Customer` 对象。 您可以尝试添加其他方法，以查看 IntelliJ IDEA 如何根据可用的 JPA 实体（在本例中为  `Customer`  类）提供完成建议。

Procedure: 创建一个 Web 控制器

控制器处理您的 Spring 应用程序的 HTTP 请求。 该应用程序将使用  `/add`  端点将  `Customer`  对象添加到数据库，使用  `/list`  端点从数据库获取所有  `Customer`  对象，并使用  `/find/{id}`  端点查找具有指定 ID 的客户。

1. 在  `/src/main/java/com/example/springboottutorial/`  下创建  `DemoController.java`  文件。

在   项目   工具窗口中，选择  `/src/main/java/com/example/springboottutorial/`  目录，然后从主菜单中选择  `文件｜新建｜Java 类​​.` （或按 `Alt+Insert` (Windows), `⌘ N` (macOS), `⌃ N` (IntelliJ IDEA Classic (macOS)), `⌘ N` (macOS System Shortcuts), `Alt+Insert` (XWin), `Alt+Insert` (GNOME), `Alt+Insert` (KDE), `Alt+Insert` (Emacs), `Ctrl+N` (Sublime Text), `⌘ N` (Sublime Text (macOS)), `Ctrl+N` (Visual Studio), `⌘ N` (Visual Studio (macOS)), `Alt+Insert` (NetBeans), `Alt+Insert` (Eclipse), `⌘ N` (Eclipse (macOS)) 并选择   Java 类  ）。 选择   类   并输入类的名称：  `DemoController` 。

2. 修改默认模板，或将其替换为以下 Java 代码：

```JAVA

package com.example.springboottutorial;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
public class DemoController {

    @Autowired
    private CustomerRepository customerRepository;

    @PostMapping("/add")
    public String addCustomer(@RequestParam String first, @RequestParam String last) {
        Customer customer = new Customer();
        customer.setFirstName(first);
        customer.setLastName(last);
        customerRepository.save(customer);
        return "Added new customer to repo!";
    }

    @GetMapping("/list")
    public Iterable<Customer> getCustomers() {
        return customerRepository.findAll();
    }

    @GetMapping("/find/{id}")
    public Customer findCustomerById(@PathVariable Integer id) {
        return customerRepository.findCustomerById(id);
    }
}



```

> **Tip:**
> 为了 Simplify 和加快控制器的创建，请考虑使用 [实时模板](using-live-templates.html)。 Spring MVC 实时模板可用于带有  `@Controller`  和  `@RestController`  注解的类。 例如，在这样的类中，开始输入  `reqm`  以快速添加一个带有相应导入语句的  `@RequestMapping`  方法。
>
>
>
> 要查看所有实时模板或创建新的实时模板，请打开 IDE 设置（ `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS))）并导航到  `外观＆行为｜编辑器｜实时模板｜Spring MVC` 。

以下是每个 Spring 注解的含义：

* `@RestController` 注解将 `DemoController` 类标记为请求处理程序（REST 控制器）。 IntelliJ IDEA 在装订区域用 ![Java Bean 图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/spring.icons.expui.gutter.springBean%4014x14.svg) 指示，您可以点击它以导航到相应的 Spring bean 声明。

* `@Autowired` 注解告诉 Spring 注入 `customerRepository` bean，它是从 [repository 接口](#create-repo) 实现的。 IntelliJ IDEA 会在注释栏中用 ![自动装配的 dependencies 图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/spring.icons.expui.showAutowiredDependencies.svg) 标记，您可以点击它来导航到相应的 autowired 依赖。 > **Tip:** > 您可以使用意图操作和后缀完成来 [快速查找和注入 bean](#quickly_inject_beans)。

* `@PostMapping("/add")` 注释将 `addCustomer()` 方法映射到 `/add` 的 POST 请求。

* `@RequestParam` 注解将方法参数映射到相应的 Web 请求参数。

* `@GetMapping("/list")` 注解将 `getCustomers()` 方法映射到针对 `/list` 的 GET 请求。

* `@GetMapping("/find/{id}")` 注解将 `findCustomerById()` 方法映射到针对 `/find/{id}` 的 GET 请求。

* `@PathVariable` 注解将 URL 中 `id` 变量的值映射到相应的方法参数。

IntelliJ IDEA 表示带有 ![网页请求映射图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/spring.icons.expui.gutter.requestMapping%4014x14.svg) 的 Web 请求方法，您可以点击来在内置 [HTTP 客户端](http-client-in-product-code-editor.html) 中执行相应请求。

Procedure: 运行您的应用程序并执行请求

1. 按 `Shift+F10` (Windows), `⌃ R` (macOS), `⇧ F10` (IntelliJ IDEA Classic (macOS)), `⌥ ⇧ R` (macOS System Shortcuts), `Shift+F10` (XWin), `Shift+F10` (GNOME), `Shift+F10` (KDE), `Shift+F10` (Emacs), `Shift+F10` (Sublime Text), `Shift+F10` (Sublime Text (macOS)), `Ctrl+F5` (Visual Studio), `⌃ F5` (Visual Studio (macOS)), `F6` (NetBeans), `Alt+Shift+X` (Eclipse), `⌘ ⇧ F11` (Eclipse (macOS)) 或使用 ![运行](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.gutter.run.svg) 图标在  `SpringBootTutorialApplication.java`  文件的装订区域来运行您的应用程序。

默认情况下，IntelliJ IDEA 会在 [运行](run-tool-window.html)工具窗口中显示正在运行的 Spring Boot 应用程序。

![包含正在运行的 Spring Boot 应用程序的 Run 工具窗口](https://resources.jetbrains.com.cn/help/img/idea/2026.3/spring-boot-demo-run-console.png)

控制台   选项卡显示 Spring 日志消息的输出。 默认情况下，内置 Apache Tomcat 服务器侦听端口 8080。

2. 打开网页浏览器并前往 [http://localhost:8080/list](http://localhost:8080/list)。 您应该看到您的应用程序返回一个空列表  `[ ]` ，因为您在数据库中没有任何客户。

若要添加客户，您需要向  `/add` 端点发送一个 POST 请求，并指定请求参数中的名字和姓氏。 IntelliJ IDEA 内置了一个 [HTTP 客户端](http-client-in-product-code-editor.html)，可以用来撰写和执行 HTTP 请求。

3. 打开  `DemoController.java` 并在  `addCustomer()` 方法旁边的边栏中点击 ![在 HTTP 请求编辑器中打开图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/spring.icons.expui.gutter.requestMapping%4014x14.svg)。

4. 在请求文件中，编写如下 POST 请求：

```HTTP_REQUEST

###
POST http://localhost:8080/add?first=Homer&last=Simpson


```

5. 点击 ![运行 HTTP 请求图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.gutter.run.svg)在装订线上执行请求。

IntelliJ IDEA 打开   运行  工具窗口并打印请求和响应：

```HTTP_REQUEST

POST http://localhost:8080/add?first=Homer&last=Simpson

HTTP/1.1 200
Content-Type: text/plain;charset=UTF-8
Content-Length: 19
Date: Thu, 28 May 2020 08:10:30 GMT
Keep-Alive: timeout=60
Connection: keep-alive

Added new customer to repo!

Response code: 200; Time: 217ms; Content length: 19 bytes


```

6. 再打开 HTTP 请求 文件并编写一个 GET 请求以获取所有客户：

```HTTP_REQUEST

###
GET http://localhost:8080/list


```

IntelliJ IDEA 提供请求方法和主体、位置及可用端点的完成建议。

![HTTP 请求文件完成](https://resources.jetbrains.com.cn/help/img/idea/2026.3/spring-http-request-completion.png)

7. 执行 GET 请求以检索所有客户：

```HTTP_REQUEST

GET http://localhost:8080/list

HTTP/1.1 200
Content-Type: application/json
Transfer-Encoding: chunked
Date: Thu, 28 May 2020 08:23:05 GMT
Keep-Alive: timeout=60
Connection: keep-alive

[
    {
        "id": 1,
        "firstName": "Homer",
        "lastName": "Simpson"
    }
]

Response code: 200; Time: 171ms; Content length: 51 bytes


```

尝试运行更多 POST 请求以添加其他客户。 每个都会获得一个唯一的 ID。 然后构建并执行 GET 请求以返回具有特定 ID 的客户。 例如：

```HTTP_REQUEST

###
GET http://localhost:8080/find/1


```

Procedure: 添加 Spring Boot Actuator

[Spring Boot Actuator](https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html) 添加了多个端点，帮助您监控和管理应用程序。 这使 IntelliJ IDEA 能够在运行时公开应用程序的健康信息和所有请求映射。

1. 打开项目根目录中的  `pom.xml`  文件。

2. 在编辑器中打开  `pom.xml`  文件后，按 `Alt+Insert` (Windows), `⌘ N` (macOS), `⌃ N` (IntelliJ IDEA Classic (macOS)), `⌘ N` (macOS System Shortcuts), `Alt+Insert` (XWin), `Alt+Insert` (GNOME), `Alt+Insert` (KDE), `Alt+Insert` (Emacs), `Ctrl+N` (Sublime Text), `⌘ N` (Sublime Text (macOS)), `Ctrl+N` (Visual Studio), `⌘ N` (Visual Studio (macOS)), `Alt+Insert` (NetBeans), `Alt+Insert` (Eclipse), `⌘ N` (Eclipse (macOS)) 并选择   添加启动器  。

3. 在打开的   添加启动器   窗口中，选择   Spring Boot Actuator   依赖项。

![编辑启动器](https://resources.jetbrains.com.cn/help/img/idea/2026.3/spring_edit_starters_actuator.png)

或者，可以手动添加该依赖项：

```XML

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


```

4. 在弹出窗口中点击 ![Sync Maven Changes 按钮](https://resources.jetbrains.com.cn/help/img/idea/2026.3/maven.images.expui.build.mavenLoadChanges.svg)，或按 `Ctrl+Shift+O` (Windows), `⌘ ⇧ I` (macOS), `⌘ ⇧ O` (IntelliJ IDEA Classic (macOS)), `⌘ ⇧ I` (macOS System Shortcuts), `Ctrl+Shift+O` (XWin), `Ctrl+Shift+O` (GNOME), `Ctrl+Shift+O` (KDE), `Ctrl+Shift+O` (Emacs), `Ctrl+Shift+O` (Sublime Text), `⌘ ⇧ I` (Sublime Text (macOS)), `Ctrl+Shift+O` (Visual Studio), `⌘ ⇧ I` (Visual Studio (macOS)), `Ctrl+Shift+O` (NetBeans), `Ctrl+Shift+O` (Eclipse), `Ctrl+Shift+O` (Eclipse (macOS)) 以同步更新后的项目结构。

5. 使用 ![重新运行按钮](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.run.rerun.svg) 或 `Ctrl+F5` (Windows), `⌘ R` (macOS), `⌃ F5` (IntelliJ IDEA Classic (macOS)), `⌘ R` (macOS System Shortcuts), `Ctrl+F5` (XWin), `Ctrl+F5` (GNOME), `Ctrl+5` (KDE), `Ctrl+F5` (Emacs), `Ctrl+F5` (Sublime Text), `⌘ R` (Sublime Text (macOS)), `Ctrl+Shift+F5` (Visual Studio), `⌥ ⇧ F5` (Visual Studio (macOS)), `Ctrl+F5` (NetBeans), `Ctrl+F11` (Eclipse), `Ctrl+F5` (Eclipse (macOS)) 重启 Spring 应用程序。

6. 打开   运行状况  选项卡以监控您的应用程序状态。

![Spring Boot Health 终端节点选项卡](https://resources.jetbrains.com.cn/help/img/idea/2026.3/spring-health-endpoints.png)

7. 打开   映射  选项卡以与 request mapping 端点进行交互。

![Spring Boot Mappings 端点选项卡](https://resources.jetbrains.com.cn/help/img/idea/2026.3/spring-mappings-endpoints.png)

要显示由库（例如 Spring Boot Actuator 本身）提供的端点，请点击 ![](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.nodes.library.svg)。 点击端点路径直接运行相应的请求，在 HTTP 请求文件中生成并打开以便您在需要时修改和执行，或者如果是 GET 请求，则在 web 浏览器中打开端点 URL。

8. 打开   环境   选项卡以查看 Spring Environment。 此信息来源于  `/actuator/env`  端点，包括来自各种配置源（如应用程序属性和环境变量）的所有可用属性。

![Spring Boot Environment 选项卡](https://resources.jetbrains.com.cn/help/img/idea/2026.3/spring-actuator-environment.png)

有关更多信息，请参见 [环境](spring-boot.html#endpoints-environment)。

Procedure: 添加 Spring Boot Developer Tools

当您对代码进行更改时，您需要重新运行整个项目：关闭具有所有依赖项的应用程序，重建代码，使用新代码启动应用程序。 IntelliJ IDEA 提供了一种重新启动您的 Spring 应用上下文而不必重新启动所有外部库上下文的方法。 在有大量依赖项的大型项目中，这可以节省时间，特别是在调试和调整代码时。 您还可以在正在运行的应用程序中更新静态和模板资源。

此功能基于 [spring-boot-devtools](https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-devtools) 模块。

1. 打开项目根目录中的  `pom.xml`  文件。

2. 在编辑器中打开  `pom.xml`  文件后，按 `Alt+Insert` (Windows), `⌘ N` (macOS), `⌃ N` (IntelliJ IDEA Classic (macOS)), `⌘ N` (macOS System Shortcuts), `Alt+Insert` (XWin), `Alt+Insert` (GNOME), `Alt+Insert` (KDE), `Alt+Insert` (Emacs), `Ctrl+N` (Sublime Text), `⌘ N` (Sublime Text (macOS)), `Ctrl+N` (Visual Studio), `⌘ N` (Visual Studio (macOS)), `Alt+Insert` (NetBeans), `Alt+Insert` (Eclipse), `⌘ N` (Eclipse (macOS)) 并选择   添加启动器  。

3. 在打开的   添加启动器   窗口中，选择   Spring Boot DevTools   依赖项。

或者，可以手动添加该依赖项：

```XML

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


```

4. 在弹出窗口中点击 ![Sync Maven Changes 按钮](https://resources.jetbrains.com.cn/help/img/idea/2026.3/maven.images.expui.build.mavenLoadChanges.svg)，或按 `Ctrl+Shift+O` (Windows), `⌘ ⇧ I` (macOS), `⌘ ⇧ O` (IntelliJ IDEA Classic (macOS)), `⌘ ⇧ I` (macOS System Shortcuts), `Ctrl+Shift+O` (XWin), `Ctrl+Shift+O` (GNOME), `Ctrl+Shift+O` (KDE), `Ctrl+Shift+O` (Emacs), `Ctrl+Shift+O` (Sublime Text), `⌘ ⇧ I` (Sublime Text (macOS)), `Ctrl+Shift+O` (Visual Studio), `⌘ ⇧ I` (Visual Studio (macOS)), `Ctrl+Shift+O` (NetBeans), `Ctrl+Shift+O` (Eclipse), `Ctrl+Shift+O` (Eclipse (macOS)) 以同步更新后的项目结构。

5. 在主菜单中，转到  `运行 | 编辑配置` 并选择   SpringBootTutorialApplication  配置。

6. 在   修改选项   下，将   执行“更新”操作时   和   框架停用时   选项都设置为   更新类和资源  ，然后点击   OK   以应用更改。

7. 请重启您的 Spring 应用程序。

您的应用程序将会正常运行，但现在每当您更改源代码或资源时，您可以触发更新。 要么从主菜单中选择  `运行 | 调试操作 | 更新“SpringBootTutorialApplication”应用程序`  `Ctrl+F10` (Windows), `⌘ F10` (macOS), `⌘ F10` (IntelliJ IDEA Classic (macOS)), `⌘ F10` (macOS System Shortcuts), `Ctrl+F10` (XWin), `Ctrl+F10` (GNOME), `Ctrl+F10` (KDE), `Ctrl+F10` (Emacs), `Ctrl+F10` (Sublime Text), `⌘ F10` (Sublime Text (macOS)), `Ctrl+F10` (Visual Studio), `⌘ F10` (Visual Studio (macOS)), `Ctrl+F10` (NetBeans), `Ctrl+F10` (Eclipse), `⌘ F10` (Eclipse (macOS))，要么将焦点从 IntelliJ IDEA 切换到另一个应用程序，例如网络浏览器。 这将更新您应用程序的所有类和资源，并在必要时重新启动应用程序。

Procedure: 更改主页

为了演示应用程序更新的工作原理，让我们在主页上公开  `/add`  和  `/list`  HTTP 端点。 有关添加首页的更多信息，请参阅 [添加主页](your-first-spring-application.html#add-home-page)。

1. 打开  `/src/main/resources/static/index.html`  文件，修改它或替换为以下 HTML 代码：

```HTML

<!DOCTYPE HTML>
<html>
    <head><link rel="canonical" href="https://www.jetbrains.com.cn/help/idea/spring-support-tutorial.html.md/" data-react-helmet="true"/>
        <title>You first Spring application</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
        <form action="/add" method="POST">
            <p>Let's add a customer.</p>

            <div>
                <label for="firstName">First name:</label>
                <input name="first" id="firstName" value="Homer">
            </div>
            <div>
                <label for="lastName">Last name:</label>
                <input name="last" id="lastName" value="Simpson">
            </div>
            <div>
                <button>Add customer</button>
            </div>
        </form>

        <form action="/list" method="GET">
            <button>List customers</button>
        </form>
    </body>
</html>


```

2. 请打开您的网络浏览器并前往 [http://localhost:8080/](http://localhost:8080/)。 如果有必要，请刷新页面以查看新的主页。

![您的 Spring 应用程序的新主页](https://resources.jetbrains.com.cn/help/img/idea/2026.3/spring-boot-web-browser-new-home-page.png)

添加一些客户并列出他们。 您也可以尝试发送 HTTP 请求到 [http://localhost:8080/find/2](http://localhost:8080/find/2) 以查找 ID 为 2 的客户。

3. 您可以更改  `index.html`  中的 HTML 代码，然后切换到网络浏览器并在刷新页面后查看更改。

您可以更进一步，安装 [LiveReload](https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-devtools-livereload)，这样浏览器将自动刷新。

## 效率提示

Procedure: 快速注入 bean

IntelliJ IDEA 提供了多种方式快速注入 bean，从而避免了您手动输入注解与字段或构造函数。

1. 在 Spring 组件中，开始输入 bean 名称。

2. 您可以通过以下方式获取所需的 bean：

* 按 `Alt+Enter` (Windows), `⌥ ⏎` (macOS), `⌥ ⏎` (IntelliJ IDEA Classic (macOS)), `⌥ ⏎` (macOS System Shortcuts), `Alt+Enter` (XWin), `Alt+Enter` (GNOME), `Alt+Enter` (KDE), `Alt+Enter` (Emacs), `Alt+Enter` (Sublime Text), `⌥ ⏎` (Sublime Text (macOS)), `Alt+Enter` (Visual Studio), `⌥ ⏎` (Visual Studio (macOS)), `Alt+Enter` (NetBeans), `Ctrl+1` (Eclipse), `⌘ 1` (Eclipse (macOS))并选择 添加名称与 'bean name' 匹配的依赖项 。

* 开始输入一个 bean 名称，然后按 `.autowire` 来调用 [后缀补全模板](postfix-code-completion.html)。 例如，输入 `custom.autowire` 以查找以 `custom` 开头的 bean。

3. 如果输入的名称与 bean 的名称完全匹配，它将立即被注入。 如果它只匹配名称的一部分，您可以从打开的   选择 Bean   窗口中选择所需的 bean。

![Bean 注入](https://resources.jetbrains.com.cn/help/img/idea/2026.3/spring_select_bean.png)

如果一个类有标注了  `@Autowire`  的字段，这将添加一个新的  `@Autowire`  字段。 否则，它将把相应的参数添加到类构造函数中。

或者，您可以按 `Alt+Insert` (Windows), `⌘ N` (macOS), `⌃ N` (IntelliJ IDEA Classic (macOS)), `⌘ N` (macOS System Shortcuts), `Alt+Insert` (XWin), `Alt+Insert` (GNOME), `Alt+Insert` (KDE), `Alt+Insert` (Emacs), `Alt+Insert` (Sublime Text), `⌘ N` (Sublime Text (macOS)), `Alt+Insert` (Visual Studio), `⌘ ⌃ N` (Visual Studio (macOS)), `Alt+Insert` (NetBeans), `Alt+Insert` (Eclipse), `⌘ N` (Eclipse (macOS)) 并从   生成   上下文菜单中选择注入类型：   @Autowired 依赖项  、   构造函数依赖项   或   Setter 依赖项  。 与上述方法不同，这种方法允许您选择一种方式来注入 bean，而不会过滤这些 bean，因此您可以预览所有 bean。

Procedure: 导航到安全的 URL

如果您使用 [Spring Security](https://docs.spring.io/spring-security/reference/index.html)，则可能会有安全规则，例如仅允许经过身份验证的用户或具有特定角色的用户访问 URL。 IntelliJ IDEA 提供从 security matchers 到 Spring controllers 以及从 controllers 到 security matchers 的导航。

* 要从 Spring security 匹配器导航到控制器方法，请点击匹配器旁的 ![](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.actions.inlaySecuredShield.svg)（例如 Spring Security 5.8 之前的  `antMatchers` 、  `mvcMatchers` 、  `requestMatchers` ，或 Spring Security 5.8 及更高版本中的  `securityMatcher` ，或 XML URL 模式）。

* 若要检查控制器的安全配置（并在该配置可用时导航至此配置），请点击 ![](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.actions.inlayGlobe.svg) 紧邻控制器URL并选择   显示 URL 的安全配置  。

![Spring Security URL 映射](https://resources.jetbrains.com.cn/help/img/idea/2026.3/spring_security_url_mapping.animated.gif)

> **Note:**
> 要禁用 ![](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.actions.inlaySecuredShield.svg) 内嵌提示图标，请按 `Alt+Enter` (Windows), `⌥ ⏎` (macOS), `⌥ ⏎` (IntelliJ IDEA Classic (macOS)), `⌥ ⏎` (macOS System Shortcuts), `Alt+Enter` (XWin), `Alt+Enter` (GNOME), `Alt+Enter` (KDE), `Alt+Enter` (Emacs), `Alt+Enter` (Sublime Text), `⌥ ⏎` (Sublime Text (macOS)), `Alt+Enter` (Visual Studio), `⌥ ⏎` (Visual Studio (macOS)), `Alt+Enter` (NetBeans), `Ctrl+1` (Eclipse), `⌘ 1` (Eclipse (macOS)) 旁边的图标并选择   隐藏受保护的 URL 内嵌标注  。 要禁用 ![](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.actions.inlayGlobe.svg) 内嵌提示图标，请按 `Alt+Enter` (Windows), `⌥ ⏎` (macOS), `⌥ ⏎` (IntelliJ IDEA Classic (macOS)), `⌥ ⏎` (macOS System Shortcuts), `Alt+Enter` (XWin), `Alt+Enter` (GNOME), `Alt+Enter` (KDE), `Alt+Enter` (Emacs), `Alt+Enter` (Sublime Text), `⌥ ⏎` (Sublime Text (macOS)), `Alt+Enter` (Visual Studio), `⌥ ⏎` (Visual Studio (macOS)), `Alt+Enter` (NetBeans), `Ctrl+1` (Eclipse), `⌘ 1` (Eclipse (macOS)) 图标旁边，然后选择   隐藏当前语言的 URL 路径内嵌提示  。
>
>
>
> 若要重新启用它们，请打开 IDE 设置（ `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS))），转到  `编辑器 | 内嵌提示` ，然后在   URL 路径   下选中所需的复选框。

Procedure: 快速创建与数据库的连接

借助   数据库工具和 SQL   插件，IntelliJ IDEA 可用于创建和管理 [数据库连接](connecting-to-a-database.html)。

在一个 Spring Boot 项目中，您可以从应用程序属性文件中立即创建它。

1. 打开一个  `application.properties`  或  `application.yml`  文件。 如果它包含与 datasource 相关的属性（例如，  `spring.datasource.url` ），datasource 图标 ![数据源图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/javaee-persistence-impl.icons.expui.add-db-from-config.svg) 将显示在护栏中。

2. 点击 ![数据源图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/javaee-persistence-impl.icons.expui.add-db-from-config.svg)。 这将打开数据源创建表单，并根据配置文件中的数据填充数据源形参（例如 URL、用户名或数据库名称）。

如果数据源已配置，则会显示数据源图标 ![](https://resources.jetbrains.com.cn/help/img/idea/2026.3/database-plugin.icons.expui.dbms.svg)。 点击它以在   数据库   工具窗口中打开数据源。

![创建数据源窗口](https://resources.jetbrains.com.cn/help/img/idea/2026.3/spring_create_datasource_from_properties.png)

以下是此操作可用的数据库列表：

* Amazon Redshift

* Apache Cassandra

* Apache Derby 数据库

* Couchbase

* H2

* HSQLDB

* IBM Db2

* MariaDB

* Microsoft SQL 服务器

* MongoDB

* MySQL

* Oracle Database

* PostgreSQL

* Redis

* SQLite

* Sybase

有关数据源形参的更多详细信息，请参阅 [数据源](managing-data-sources.html)。

## 接下来怎么办？

这涵盖 IntelliJ IDEA 为 Spring 开发提供的所有基本功能。 您还可以查看 [Spring 图](spring-diagrams.html)，了解 Spring 应用程序中的依赖项概述，并阅读有关所涵盖 [Spring Boot](spring-boot.html) 功能的更多具体信息。

