16. Auto-configuration

Spring Boot 自动配置会尝试根据添加的 jar 依赖项自动配置 Spring 应用程序。例如,如果HSQLDB在 Classpath 上,并且您尚未手动配置任何数据库连接 bean,那么 Spring Boot 会自动配置内存数据库。

您需要通过向@Configuration类之一添加@EnableAutoConfiguration@SpringBootApplicationComments 来选择自动配置。

Tip

您只能添加一个@SpringBootApplication@EnableAutoConfigurationComments。通常,我们建议您仅将一个或另一个添加到主要的@Configuration类中。

16.1 逐步取代自动配置

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

如果您需要找出当前正在应用的自动配置以及原因,请使用--debug开关启动您的应用程序。这样做可以启用调试日志以供选择核心 Logger,并将条件报告记录到控制台。

16.2 禁用特定的自动配置类

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

import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.autoconfigure.jdbc.*;
import org.springframework.context.annotation.*;

@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}

如果该类不在 Classpath 中,则可以使用 Comments 的excludeName属性,并指定完全限定的名称。最后,您还可以使用spring.autoconfigure.exclude属性来控制要排除的自动配置类的列表。

Tip

您可以在 Comments 级别和使用属性来定义排除项。