自动配置

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

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

你应该只添加一个 @SpringBootApplication@EnableAutoConfiguration 注解。 我们通常建议你只在主 @Configuration 类上添加其中一个。

逐步替换自动配置

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

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

禁用特定的自动配置类

如果你发现正在应用一些你不需要的特定自动配置类,你可以使用 @SpringBootApplication 的 exclude 属性来禁用它们,如下例所示:

  • Java

  • Kotlin

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

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

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

@SpringBootApplication(exclude = [DataSourceAutoConfiguration::class])
class MyApplication

如果该类不在类路径中,你可以使用注解的 excludeName 属性并指定完全限定名称。 如果你更喜欢使用 @EnableAutoConfiguration 而不是 @SpringBootApplicationexcludeexcludeName 也是可用的。 最后,你还可以使用 spring.autoconfigure.exclude 属性来控制要排除的自动配置类列表。

你可以在注解级别和使用属性时定义排除项。
尽管自动配置类是 public 的,但被认为是公共 API 的类的唯一方面是可以用于禁用自动配置的类名。 这些类的实际内容,如嵌套配置类或 bean 方法,仅供内部使用,我们不建议直接使用它们。

自动配置包

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