IntelliJ IDEA 2025.2 Help

教程:探索 Spring 支持功能

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

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

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

  • 编写并检查您的代码

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

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

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

为 JPA 和 H2 添加依赖

Spring Data JPA 模块提供了使用 Java Persistence API (JPA) 进行数据访问的支持。

H2 是用 Java 编写的快速内存中 SQL 数据库。

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

    项目根目录下的 pom.xml 文件
  2. 在编辑器中打开 pom.xml 文件后,按 Alt+Insert 并选择 添加启动器

  3. 在打开的窗口中,选择 Spring Data JPAH2 数据库 依赖项。

    • org.springframework.boot:spring-boot-starter-data-jpa

    • com.h2database:h2

    或者,您可以手动将这些依赖项添加到 pom.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 按钮 或按 Ctrl+Shift+O 以同步更新的项目结构。

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

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

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

    项目 工具窗口中,选择 src/main/java/com/example/springboottutorial 目录,然后从主菜单中选择 文件 | 新建 | Java 类 (或按下 Alt+Insert 并选择 Java 类)。 选择 并输入类的名称: Customer

  2. 修改默认模板或将其替换为以下 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 在装订区域用 实体图标 指定它。

    @Id 注解表明 id 字段是对象的 ID。 IntelliJ IDEA 在装订区域用 ID 图标 指定它。 JPA 用 @GeneratedValue 告诉 ID 应该自动生成。

    所有其他实体属性(firstNamelastName 在我们的示例中)都在装订区域用 ID 图标 指定。 您可以用它在 持久性视图中快速打开该属性。

创建一个存储库接口

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

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

    项目 工具窗口中,选择 src/main/java/com/example/springboottutorial 目录,然后从主菜单中选择 文件 | 新建 | Java 类 (或按下 Alt+Insert 并选择 Java 类)。 选择 接口 并输入接口名称: CustomerRepository

  2. 修改默认模板或将其替换为以下 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 类)提供完成建议。

创建一个 Web 控制器

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

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

    项目 工具窗口中,选择 /src/main/java/com/example/springboottutorial/ 目录,然后从主菜单中选择 文件 | 新建 | Java 类 (或按下 Alt+Insert 并选择 Java 类)。 选择 并输入类的名称: DemoController

  2. 修改默认模板或将其替换为以下 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); } }

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

    • @RestController 注解标记 DemoController 类为请求处理程序(一个 REST 控制器)。 IntelliJ IDEA 在装订区域用 Java Bean 图标 指示,您可以点击它以导航到相应的 Spring bean 声明。

    • @Autowired 注解告诉 Spring 注入 customerRepository bean,它是从 repository 接口 实现的。 IntelliJ IDEA 会在注释栏中用 自动装配的 dependencies 图标 标记,您可以点击它来导航到相应的 autowired 依赖。

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

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

    • @GetMapping("/list") 注释将 getCustomers() 方法映射到 /list 的 GET 请求。

    • @GetMapping("/find/{id}") 注释将 findCustomerById() 方法映射到 /find/{id} 的 GET 请求。

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

    IntelliJ IDEA 表示带有 网页请求映射图标 的 Web 请求方法,您可以点击来在内置 HTTP 客户端 中执行相应请求。

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

  1. Shift+F10 或使用 运行 图标在 SpringBootTutorialApplication.java 文件的装订区域来运行您的应用程序。

    默认情况下,IntelliJ IDEA 会在 运行工具窗口中显示您正在运行的 Spring Boot 应用程序。

    运行中的 Spring Boot 应用程序的 Run 工具窗口

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

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

    若要添加客户,您需要向 /add 端点发送一个 POST 请求,并指定请求参数中的名字和姓氏。 IntelliJ IDEA 内置了一个 HTTP 客户端 ,可以用来撰写和执行 HTTP 请求。

  3. 打开 DemoController.java 并在 addCustomer() 方法旁边的边栏中点击 在 HTTP 请求编辑器中打开图标

  4. 在请求文件中,编写如下 POST 请求:

    ### POST http://localhost:8080/add?first=Homer&last=Simpson
  5. 点击 运行 HTTP 请求图标 在装订线上执行请求。

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

    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 请求以获取所有客户:

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

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

    HTTP 请求文件完成
  7. 执行 GET 请求以检索所有客户:

    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 的客户。 例如:

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

添加 Spring Boot Actuator

Spring Boot Actuator 添加了多个端点,帮助您监控和管理应用程序。 这使 IntelliJ IDEA 能够在运行时公开应用程序的健康信息和所有请求映射。

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

  2. 在编辑器中打开 pom.xml 文件后,按 Alt+Insert 并选择 添加启动器

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

    编辑启动器

    或者,您可以手动添加依赖:

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
  4. 在弹出窗口中点击 Sync Maven Changes 按钮 或按 Ctrl+Shift+O 以同步更新的项目结构。

  5. 使用 重新运行按钮Ctrl+F5 重新启动您的 Spring 应用程序。

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

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

    Spring Boot Mappings 端点选项卡

    要显示由库(例如 Spring Boot Actuator 本身)提供的端点,请点击 。 点击端点路径直接运行相应的请求,在 HTTP 请求文件中生成并打开以便您在需要时修改和执行,或者如果是 GET 请求,则在 web 浏览器中打开端点 URL。

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

    Spring Boot Environment 选项卡

    有关更多信息,请参见 环境

添加 Spring Boot Developer Tools

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

此功能基于 spring-boot-devtools 模块。

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

  2. 在编辑器中打开 pom.xml 文件后,按 Alt+Insert 并选择 添加启动器

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

    或者,您可以手动添加依赖:

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
  4. 在弹出窗口中点击 Sync Maven Changes 按钮 或按 Ctrl+Shift+O 以同步更新的项目结构。

  5. 在主菜单中,转到 运行(U) | 编辑配置(E) 并选择 SpringBootTutorialApplication 配置。

  6. 修改选项(M) 下,将 执行“更新”操作时(U)切换出IDE 时(F) 选项都设置为 更新类和资源 ,然后点击 确定(O) 以应用更改。

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

您的应用程序将会正常运行,但现在每当您更改源代码或资源时,您可以触发更新。 要么从主菜单中选择 运行(U) | 调试操作 | 更新'SpringBootTutorialApplication' 应用程序 Ctrl+F10 ,要么将焦点从 IntelliJ IDEA 切换到另一个应用程序,例如网络浏览器。 这将更新您应用程序的所有类和资源,并在必要时重新启动应用程序。

更改主页

为了演示应用程序更新的工作原理,让我们在主页上公开 /add/list HTTP 端点。 有关添加首页的更多信息,请参阅 添加主页

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

    <!DOCTYPE HTML> <html> <head> <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/。 如果有必要,请刷新页面以查看新的主页。

    您的 Spring 应用程序的新主页

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

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

    您可以更进一步,安装 LiveReload ,这样浏览器将自动刷新。

效率提示

快速注入 bean

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

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

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

    • Alt+Enter 并选择 添加名称匹配“bean name”的依赖项

    • 开始输入一个 bean 名称,然后按 .autowire 来调用 后缀补全模板。 例如,输入 custom.autowire 以查找以 custom 开头的 bean。

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

    Bean 注入

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

或者,您可以按 Alt+Insert 并从 生成 上下文菜单中选择注入类型: @Autowired 依赖项构造函数依赖项Setter 依赖项。 与上述方法不同,这种方法允许您选择一种方式来注入 bean,而不会过滤这些 bean,因此您可以预览所有 bean。

如果您使用 Spring Security ,则可能会有安全规则,例如仅允许经过身份验证的用户或具有特定角色的用户访问 URL。 IntelliJ IDEA 提供从 security matchers 到 Spring controllers 以及从 controllers 到 security matchers 的导航。

  • 要从 Spring security 匹配器导航到控制器方法,请点击匹配器旁的 (例如 Spring Security 5.8 之前的 antMatchersmvcMatchersrequestMatchers ,或 Spring Security 5.8 及更高版本中的 securityMatcher ,或 XML URL 模式)。

  • 若要检查控制器的安全配置(并在该配置可用时导航至此配置),请点击 紧邻控制器URL并选择 显示 URL 的安全配置

Spring Security URL 映射

快速创建与数据库的连接

使用 数据库工具与 SQL 插件,IntelliJ IDEA 使您能够创建和管理 数据库连接

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

  1. 打开一个 application.properties application.yml 文件。 如果它包含与 datasource 相关的属性(例如, spring.datasource.url ),datasource 图标 数据源图标 将显示在护栏中。

  2. 点击 数据源图标。 这将打开数据源创建表单,数据源参数(如 URL、用户名或数据库名称)将根据您配置文件中的数据进行填充。

    如果数据源已配置,则会显示数据源图标 。 点击它以在 数据库 工具窗口中打开数据源。

    创建数据源窗口

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

  • Amazon Redshift

  • Apache Cassandra

  • Apache Derby

  • Couchbase

  • H2

  • HSQLDB

  • IBM Db2

  • MariaDB

  • Microsoft SQL 服务器

  • MongoDB

  • MySQL

  • Oracle 数据库

  • PostgreSQL

  • Redis

  • SQLite

  • Sybase

有关数据源参数的详细信息,请参阅 数据源

未来计划?

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

最后修改日期: 2025年 9月 22日