09.自动配置

Spring Boot 自动配置目的是根据添加的 jar 依赖项自动配置 Spring 应用程序。 例如,如果 HSQLDB 位于classpath上,而你没有手动配置任何数据库连接 bean,那么 Spring Boot 将自动配置一个内存数据库。

您需要通过向 @Configuration 类中添加@EnableAutoConfiguration@SpringBootApplication 注解来选择自动配置。

你应该只添加一个·@SpringBootApplication@EnableAutoConfiguration 注解,通常建议 你将其中一个添加到你的主 @Configuration 类中。

逐渐取代自动配置

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

如果您需要了解当前应用的自动配置了哪些内容,以及为什么会自动配置,那么可以使用 --debug 开关启动应用程序。 这样做可以为选择的核心日志记录器启用调试日志,并将日志输出到控制台。

禁用特定的自动配置类

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

1
2
3
4
5
6
import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.autoconfigure.jdbc.*;

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
public class MyApplication {
}

如果类不在 classpath 下,则可以使用 excludeName 属性并指定完全限定名。 如果您更喜欢使用@EnableAutoConfiguration而不是@SpringBootApplication ,也可以使用 excludeexcludeName,此外,还可以使用 spring.autoconfigure.exclude 属性控制要排除的自动配置类列表。

可以在注释级别和通过使用属性定义要排除的自动配置类