首页 >Java >java教程 >弹簧 - 配置与两个盒子分解

弹簧 - 配置与两个盒子分解

Patricia Arquette
Patricia Arquette原创
2025-01-29 16:15:10452浏览

spring-: configuration-with-two-out-of-the-box-solutions

Spring Boot 配置的两种方案

Spring Boot 认识到不同的项目有不同的配置需求,因此提供了两种方法:

  1. 手动配置 (@SpringBootConfiguration) – 对于需要精细化控制的项目。
  2. 自动配置 (@EnableAutoConfiguration) – 对于受益于约定优于配置(即更少的手动设置)的项目。

选择取决于项目的具体需求。

何时使用哪种方法?

使用场景 方法 原因
需要完全控制 Bean 和配置
使用场景 方法 原因
需要完全控制 Bean 和配置 @SpringBootConfiguration 手动定义所有内容(就像在经典 Spring 项目中一样)。
需要 Spring Boot 自动配置常用组件 @EnableAutoConfiguration 通过基于依赖项自动配置 Bean 来节省时间。
需要同时使用两种方法 两种方法都使用 自动配置已启用,但手动配置会覆盖默认值。
需要使用特定配置测试 Spring Boot 应用程序 @SpringBootConfiguration 可用于使用自定义测试配置进行单元测试。
需要禁用或调整自动配置 @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) 根据需要可以禁用特定的自动配置。
手动定义所有内容(就像在经典 Spring 项目中一样)。
需要 Spring Boot 自动配置常用组件 通过基于依赖项自动配置 Bean 来节省时间。
需要同时使用两种方法 两种方法都使用 自动配置已启用,但手动配置会覆盖默认值。
需要使用特定配置测试 Spring Boot 应用程序 可用于使用自定义测试配置进行单元测试。
需要禁用或调整自动配置 @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) 根据需要可以禁用特定的自动配置。

实践场景

1️⃣ 完全手动配置(传统的 Spring)

如果您的项目需要完全控制(例如,遗留系统迁移或高度自定义的系统):

<code class="language-java">@SpringBootConfiguration
public class MyAppConfig {
    @Bean
    public DataSource dataSource() {
        return new HikariDataSource(); // 手动配置数据库
    }
}</code>
  • 无自动配置: 您必须手动定义所有 Bean。
  • 当您想要避免隐藏行为时非常有用。

2️⃣ 完全自动配置(Spring Boot 默认)

如果您想让 Spring Boot 处理所有事情,请使用:

<code class="language-java">@SpringBootApplication // 包含 @EnableAutoConfiguration
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}</code>
  • 自动配置数据库、Web 服务器、安全等。
  • 非常适合快速开发和微服务。

3️⃣ 混合方法(自动 手动配置)

如果您需要自动配置,但想要覆盖某些部分,请执行以下操作:

<code class="language-java">@SpringBootApplication
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}

@Configuration
class ManualConfig {
    @Bean
    public DataSource dataSource() {
        return new HikariDataSource(); // 覆盖默认自动配置的 DataSource
    }
}</code>
  • 手动 Bean (dataSource) 优先于自动配置的 Bean。
  • 当自动配置大部分都很好,但您需要自定义关键部分时非常有用。

总结

是的,Spring Boot 提供了两种解决配置问题的方案,最佳选择取决于项目的需要:

  • 对于快速开发,使用 @EnableAutoConfiguration
  • 对于完全控制,使用 @SpringBootConfiguration
  • 对于均衡的方法,让自动配置处理大部分事情,但在必要时进行覆盖。 ?

以上是弹簧 - 配置与两个盒子分解的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn