自动配置

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

你需要通过向你的一个@Configuration类中添加@EnableAutoConfiguration@SpringBootApplication注解来选择加入自动配置。

你应该只添加一个@SpringBootApplication@EnableAutoConfiguration注解。我们通常建议你仅向你的主@Configuration类添加一个。

逐步替换自动配置

自动配置是非侵入式的。你可以随时开始定义你自己的配置来替换自动配置的特定部分。例如,如果你添加你自己的DataSourcebean,则默认的嵌入式数据库支持会退回。

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

禁用特定的自动配置类

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

  • 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注解配置附加的包。