自动配置
Spring Boot 自动配置会尝试根据你添加的 Jar 依赖来自动配置你的 Spring 应用。例如,如果你的 classpath 中有 HSQLDB,并且你没有手动配置任何数据库连接 bean,那么 Spring Boot 会自动配置一个内存数据库。
你需要通过将 @EnableAutoConfiguration
或 @SpringBootApplication
注解添加到你的一个 @Configuration
类来启用自动配置。
你应该只添加一个 @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
如果类不在 classpath 中,你可以使用注解的 excludeName
属性并指定完全限定名。如果你更喜欢使用 @EnableAutoConfiguration
而不是 @SpringBootApplication
,exclude
和 excludeName
属性也可用。最后,你还可以通过使用 spring.autoconfigure.exclude
属性来控制要排除的自动配置类列表。
你可以在注解级别和使用属性的方式定义排除项。 |
尽管自动配置类是 public 的,但类的唯一被视为公共 API 的部分是类名,类名可以用于禁用自动配置。这些类的实际内容,例如嵌套配置类或 bean 方法,仅供内部使用,我们不建议直接使用它们。 |
自动配置包
自动配置包是各种自动配置特性在扫描实体和 Spring Data repository 等内容时默认查找的包。@EnableAutoConfiguration
注解(直接使用或通过它存在于 @SpringBootApplication
上)决定了默认的自动配置包。可以使用 @AutoConfigurationPackage
注解配置额外的包。