Auto-configuration
Spring Boot 自动配置会根据你添加的 jar 依赖自动配置你的 Spring 应用。例如,如果 HSQLDB 在你的 classpath 中,并且你没有手动配置任何数据库连接 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.jdbc.autoconfigure.DataSourceAutoConfiguration;
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
public class MyApplication {
}
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration
@SpringBootApplication(exclude = [DataSourceAutoConfiguration::class])
class MyApplication
如果该类不在 classpath 中,你可以使用注解的 excludeName 属性并指定其全限定名。如果你更倾向于使用 @EnableAutoConfiguration 而非 @SpringBootApplication,exclude 和 excludeName 同样可用。最后,你也可以通过 spring.autoconfigure.exclude 属性来控制要排除的自动配置类列表。
你可以在注解级别以及通过使用属性来定义排除项。
尽管自动配置类是 public 的,但这些类中唯一被视为公共 API 的部分是类名,可用于禁用自动配置。这些类的实际内容(例如嵌套的配置类或 bean 方法)仅供内部使用,我们不建议直接使用它们。
自动配置包
自动配置包(Auto-configuration packages)是各种自动配置功能在扫描实体(entities)和 Spring Data 仓库(repositories)等组件时默认查找的包。@EnableAutoConfiguration 注解(直接使用,或通过 @SpringBootApplication 注解间接引入)决定了默认的自动配置包。可以使用 @AutoConfigurationPackage 注解来配置额外的包。