Auto-configuration
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.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
如果类不在类路径上,您可以使用注解的 excludeName 属性并指定完全限定名。
如果您更喜欢使用 @EnableAutoConfiguration 而不是 @SpringBootApplication,那么 exclude 和 excludeName 也可用。
最后,您还可以使用 spring.autoconfigure.exclude 属性来控制要排除的自动配置类列表。
| 您可以在注解级别定义排除项,也可以通过属性来定义。 |
尽管自动配置类是public的,但仅考虑作为公共API的部分是类的名称,该名称可以用于禁用自动配置。
那些类的实际内容,如嵌套配置类或bean方法,则仅供内部使用,并不推荐直接使用这些内容。 |
自动配置包
自动配置包是各种自动配置功能在扫描实体和 Spring Data 存储库等内容时默认查找的包。
@EnableAutoConfiguration 注解(直接使用或通过其存在于 @SpringBootApplication 上)决定了默认的自动配置包。
可以使用 @AutoConfigurationPackage 注解来配置额外的包。