Spring Boot自动装配尝试根据添加的jar依赖项自动配置Spring应用程序。例如,如果HSQLDB在classpath中,并且您尚未手动配置任何数据库连接bean,那么Spring Boot会自动配置内存数据库。
您需要通过将@EnableAutoConfiguration@SpringBootApplication注解添加到一个@Configuration类来选择使用自动配置。

灯泡.svg 您只能添加一个@SpringBootApplication@EnableAutoConfiguration注释。我们通常建议您仅将其中一个添加到您的主要@Configuration类。

4.1 逐渐取代自动配置

自动配置是非侵入性的。在任何时候,您都可以开始定义自己的配置,以替换自动配置的特定部分。例如,如果您添加自己的DataSourcebean,则退出默认的嵌入式数据库支持。
如果您需要找出当前正在应用的自动配置以及原因,请使用--debug开关启动应用程序。这样做可以启用一些选择的核心日志记录器的调试日志,并在控制台中输出状态报告。

4.2 禁用特定的自动配置类

如果发现正在应用某系不需要的特定自动配置类,则可以使用@SpringBootApplication的exclude属性来禁用它们,如以下示例所示:

  1. import org.springframework.boot.autoconfigure.*;
  2. import org.springframework.boot.autoconfigure.jdbc.*;
  3. @SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
  4. public class MyApplication {
  5. }

如果该类不在classpath中,则可以使用注释的excludeName属性,并指定完全限定名称。如果您更喜欢使用@EnableAutoConfiguration而不是@SpringBootApplication,也提供了excludeexcludeName。最后,您还可以使用spring.autoconfigure.exclude属性来控制要排除的自动配置类的列表。

灯泡.svg 在注解级别和使用属性都可以用来定义排除项。

info.svg 即使是自动配置类是public的,该类的唯一方面,视为公共API是该类的名称,名称是可被用于禁用自动配置。这些类的实际内容(例如,嵌套配置类或Bean方法)仅供内部使用,我们不建议直接使用它们。