跳到主要内容

自动配置

DeepSeek V3 中英对照 Auto-configuration

Spring Boot 自动配置会根据您添加的 jar 依赖项尝试自动配置您的 Spring 应用程序。例如,如果您的类路径中包含 HSQLDB,并且您没有手动配置任何数据库连接 bean,那么 Spring Boot 会自动配置一个内存数据库。

你需要通过在你的某个 @Configuration 类上添加 @EnableAutoConfiguration@SpringBootApplication 注解来选择启用自动配置功能。

提示

你应当只在主配置类中添加一个 @SpringBootApplication@EnableAutoConfiguration 注解。我们通常建议你仅在主 @Configuration 类中添加其中之一。

逐步替换自动配置

自动配置是非侵入式的。在任何时候,你都可以开始定义自己的配置来替换自动配置的特定部分。例如,如果你添加了自己的 DataSource Bean,默认的嵌入式数据库支持将会退出。

如果你需要了解当前应用了哪些自动配置,以及它们被应用的原因,可以在启动应用程序时使用 --debug 开关。这样做会启用一组核心日志记录器的调试日志,并将条件报告输出到控制台。

禁用特定的自动配置类

如果你发现某些不希望应用的特定自动配置类被启用了,你可以使用 @SpringBootApplication 注解的 exclude 属性来禁用它们,如下例所示:

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
public class MyApplication {

}
java

如果类不在类路径上,你可以使用注解的 excludeName 属性并指定完全限定名称来代替。如果你更倾向于使用 @EnableAutoConfiguration 而不是 @SpringBootApplicationexcludeexcludeName 同样可用。最后,你还可以通过使用 spring.autoconfigure.exclude 属性来控制要排除的自动配置类列表。

提示

您可以在注解级别或通过使用属性来定义排除项。

备注

尽管自动配置类是 public 的,但唯一被视为公共 API 的部分是可以用于禁用自动配置的类名。这些类的实际内容,例如嵌套的配置类或 bean 方法,仅供内部使用,我们不建议直接使用它们。

自动配置包

自动配置包是各种自动配置功能在扫描实体和 Spring Data 仓库等内容时默认查找的包。@EnableAutoConfiguration 注解(直接使用或通过其存在于 @SpringBootApplication 中)决定了默认的自动配置包。可以使用 @AutoConfigurationPackage 注解来配置额外的包。