SpringBoot 官方文档中文版 - 4. 配置类与自动化配置
前言
这是 SpringBoot 官方文档中文翻译版系列的第四篇文章:
前三篇文章如下:
SpringBoot 官方文档中文版 - 3. 构建你的代码
配置类
Spring Boot 支持基于 java 的配置。尽管可以将 SpringApplication 与 XML 一起使用,但我们通常建议您的主类是一个 @Configuration 类,通常定义主方法的类是首选 @Configuration。
译者注:@SpringBootApplication 注解就已经包含了 @Configuration。
Internet 上已经发布了许多使用 XML 配置的 Spring 配置示例。如果可能,总是尝试使用等效的基于 java 的配置。搜索 Enable* 注释可能是一个很好的起点。
1. 导入额外的配置类
您不需要将所有的 @Configuration 放入单个类中。@Import 注释可用于导入其他配置类。或者,您可以使用 @ComponentScan 自动扫描所有 Spring 组件,包括@Configuration 类。
2. 导入 XML 配置
如果您绝对必须使用基于 XML 的配置,我们建议您仍然从 @Configuration 类开始。然后可以使用 @ImportResource 注释来加载 XML 配置文件。
自动化配置
Spring Boot 自动配置尝试根据添加的 jar 依赖项自动配置 Spring 应用程序。例如,如果 HSQLDB 位于类路径上,并且您没有手动配置任何数据库连接 bean,那么 Spring Boot 会自动配置内存中的数据库。
您需要通过添加 @Configuration 类中的 @EnableAutoConfiguration 或 @SpringBootApplication 注解来选择自动配置。
您应该只添加一个 @SpringBootApplication 或 @EnableAutoConfiguration 注解。我们通常建议您只在主 @Configuration 类中添加一个或另一个。
1. 逐渐取代自动配置
自动配置非侵入性。在任何时候,您都可以开始定义自己的配置,以替换自动配置的特定部分。例如,如果您添加自己的 DataSource bean,默认的嵌入式数据库支持就会后退。
如果您需要了解当前应用的是什么自动配置以及原因,请使用—— debug 开关启动应用程序。这样做可以为选择的核心日志记录器启用调试日志,并向控制台记录条件报告。
2. 禁用特定的自动配置类
如果你发现你不想要的特定的自动配置类正在被应用,你可以使用 @SpringBootApplication 的 exclude 属性来禁用它们,如下面的例子所示:
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
public class MyApplication {
}
如果类不在类路径上,则可以使用注释的 excludeName 属性并指定完全限定名。如果您更喜欢使用 @EnableAutoConfiguration 而不是 @SpringBootApplication,也可以使用 exclude 和 excludeName。最后,您还可以使用 spring.autoconfigure.exclude 属性来控制要排除的自动配置类列表。
您可以在注解级别和使用属性定义排除。
提示:尽管自动配置类是公共的,但该类被认为是公共 API 的唯一方面是可用于禁用自动配置的类名。这些类的实际内容(如嵌套配置类或bean方法)仅供内部使用,我们不建议直接使用它们。
每天学习一点点,每天进步一点点。