Spring Boot 自动配置2025 年 3 月 18 日 | 阅读 7 分钟 Spring Boot 自动配置会根据我们添加的 jar 依赖项自动配置 Spring 应用程序。 例如,如果类路径中存在 H2 数据库 Jar,并且我们没有手动配置任何与数据库相关的 bean,Spring Boot 的自动配置功能会自动在项目中进行配置。 我们可以使用 @EnableAutoConfiguration 注解来启用自动配置功能。但这个注解已经不再使用了,因为它已经被包装在 @SpringBootApplication 注解中。 @SpringBootApplication 注解是三个注解的组合:@ComponentScan, @EnableAutoConfiguration, 和 @Configuration。然而,我们使用 @SpringBootApplication 注解而不是 @EnableAutoConfiguration。 @SpringBootApplication=@ComponentScan+@EnableAutoConfiguration+@Configuration 当我们向项目中添加 spring-boot-starter-web 依赖项时,Spring Boot 自动配置会在类路径中查找 Spring MVC。它会自动配置 dispatcherServlet、默认的 错误页面 和 web jars。 同样,当我们添加 spring-boot-starter-data-jpa 依赖项时,我们会看到 Spring Boot 自动配置会自动配置 datasource 和 Entity Manager。 所有的自动配置逻辑都实现在 spring-boot-autoconfigure.jar 中,如下图所示。 ![]() 自动配置的必要性基于 Spring 的应用程序需要大量的配置。当我们使用 Spring MVC 时,我们需要配置 dispatcher servlet, view resolver, web jars 等。下面的代码显示了 web 应用程序中 dispatcher servlet 的典型配置 同样,当我们使用 Hibernate/JPA 时,我们需要配置 datasource, transaction manager, entity manager factory 等。 配置数据源 配置实体管理器工厂 配置事务管理器 禁用自动配置类如果我们不希望应用特定的自动配置类,我们也可以禁用它们。我们使用 @EnableAutoConfiguration 注解的 exclude 属性来禁用自动配置类。例如 如果类不在类路径中,我们可以使用 @EnableAutoConfiguration 注解的 excludeName 属性来指定类的 完全限定名。我们可以使用 spring.autoconfigure.exclude 属性来排除任意数量的自动配置类。 Spring Boot 自动配置示例在下面的示例中,我们将了解 Spring Boot 的自动配置功能是如何工作的。 第一步: 打开 Spring Initializr https://start.spring.io/。 步骤 2: 提供 Group 名称。我们提供了 com.javatpoint。 第三步: 提供 Artifact ID。我们提供了 spring-boot-autoconfiguration-example。 第四步: 添加依赖项:Spring Web, Spring Data JPA, 和 H2 Database。 第五步: 点击 Generate 按钮。当我们点击 Generate 按钮时,它会将项目打包成 Jar 文件并下载到本地。 ![]() 第六步:解压 Jar 文件并将其粘贴到 STS 工作空间。 第七步:将 项目文件夹导入 STS。 File -> Import -> Existing Maven Projects -> Browse -> Select the folder spring-boot-autoconfiguration-example -> Finish 它需要一些时间来导入。 第八步: 在 src/main/java 文件夹中创建一个名为 com.javatpoint.controller 的包。 第九步: 在 com.javatpoint.controller 包中创建一个名为 ControllerDemo 的 Controller 类。 ControllerDemo.java 第十步: 在 src/main/java 文件夹中创建另一个名为 com.javatpoint.model 的包。 第十一步: 在 com.javatpoint.model 包中创建一个名为 User 的类。 User.java 现在我们需要配置 H2 数据库。 第十二步: 打开 application.properties 文件并配置以下内容:port, enable the H2 console, datasource, 和 URL。 application.properties 第十三步: 在 src/main/resources 文件夹中创建一个 SQL 文件。 右键单击文件夹 src/main/resources -> New -> File -> 提供文件名 -> Finish 我们提供了文件名 data.sql 并将以下数据插入其中。 data.sql 第十四步: 在 src 文件夹中创建一个名为 webapp 的文件夹。 第十五步: 在 ControllerDemo 中返回的 ControllerDemo.java 中创建一个名为 home.jsp 的 JSP 文件。 home.jsp 第十六步: 运行 SpringBootAutoconfigurationExampleApplication.java 文件。我们可以在控制台中看到我们的应用程序在端口 8085 上成功运行。 ![]() 第十七步: 打开浏览器并访问 URL https://:8085/h2-console/。它会显示我们在 application.properties 文件中配置的 Driver Class、JDBC URL,以及默认的用户名 sa。 ![]() 我们也可以通过点击 Test Connection 按钮来测试连接。如果连接成功,它会显示一条消息 Test Successful。 第十八步: 点击 Connect 按钮。它会显示我们在 User.java 文件中定义的 userdata 表的结构。 ![]() 第十九步: 执行以下查询以查看我们在 data.sql 文件中插入的数据。 ![]() 让我们仔细看看控制台。我们看到 TransactionManagement, DispatcherServlet, EntityManagerFactory, 和 DataSource 已自动配置,如下图所示。 ![]() 调试自动配置我们可以通过以下两种方式查找有关自动配置的更多信息:
开启调试日志 我们可以在 application.properties 文件中添加一个属性来调试日志。让我们在上面的示例中实现调试日志。打开 application.properties 文件并添加以下属性: 现在重新启动应用程序。我们会在日志中看到一个自动配置报告。该报告包括所有自动配置的类。它分为两部分:positive matches(积极匹配)和 negative matches(消极匹配),如下图所示。 积极匹配 ![]() 消极匹配 ![]() Spring Boot Actuator 我们也可以通过在项目中使用的 Actuator 来调试自动配置。我们还将添加 HAL Browser 以简化操作。它显示了所有自动配置的 bean 以及未配置的 bean 的详细信息。 让我们创建一个 Spring Boot Actuator 的示例。 步骤1: 打开Spring Initializr http://start.spring.io。 步骤 2:提供Group 名称。我们提供了 com.javatpoint。 第三步: 提供 Artifact ID。我们提供了 actuator-autoconfiguration-example。 第四步: 添加依赖项:Spring Web 和 Spring Boot Actuator。 第五步: 点击 Generate 按钮。它将所有与项目相关的规范绑定到一个 jar 文件并下载到我们的本地。 步骤 6: 解压 下载的 jar 文件。 步骤 7:导入 项目文件夹,通过以下步骤 File -> Import -> Existing Maven Project -> Next -> Browse -> Select the Project folder -> Finish 导入项目后,我们可以在 IDE 的 Package Explorer 部分看到以下目录结构。 ![]() 第八步: 在 com.javatpoint. 包中创建一个 Controller 类。我们创建了一个名为 DemoRestController 的 Controller 类。 在 Controller 中,我们定义了一个名为 hello() 的方法,该方法返回一个字符串。 DemoRestController.java 第九步: 运行 ActuatorAutoConfigurationExampleApplication.java 文件。 第十步: 打开浏览器并访问 URL https://:8080/hello。它返回我们在 controller 中指定的字符串。 ![]() 现在访问 actuator URL https://:8080/actuator。它会启动 actuator,显示三个 URL:self、health 和 info,如下图所示。 第十一步: 打开 pom.xml 文件并添加 HAL Browser 依赖项。 第十二步: 再次运行 ActuatorAutoConfigurationExampleApplication.java 文件。 要访问 HAL browser,请在浏览器中键入 https://:8080 并按 Enter 键。 ![]() 现在我们可以通过 HAL browser 访问 actuator。 在 Explorer 的文本框中键入 /actuator 并点击 Go 按钮。 ![]() 它显示了与 actuator 相关的所有内容。actuator 中最重要的是 beans。 ![]() 当我们点击 bean 的箭头时,它会显示 Spring Boot 项目中配置的所有 bean。 ![]() 上图显示了所有自动配置的 bean 以及未配置的 bean 的详细信息。 |
我们请求您订阅我们的新闻通讯以获取最新更新。