Spring Boot自动装配尝试根据添加的jar依赖项自动配置Spring应用程序。例如,如果HSQLDB
在classpath中,并且您尚未手动配置任何数据库连接bean,那么Spring Boot会自动配置内存数据库。
您需要通过将@EnableAutoConfiguration
或@SpringBootApplication
注解添加到一个@Configuration
类来选择使用自动配置。
您只能添加一个
@SpringBootApplication
或@EnableAutoConfiguration
注释。我们通常建议您仅将其中一个添加到您的主要@Configuration
类。
4.1 逐渐取代自动配置
自动配置是非侵入性的。在任何时候,您都可以开始定义自己的配置,以替换自动配置的特定部分。例如,如果您添加自己的DataSource
bean,则退出默认的嵌入式数据库支持。
如果您需要找出当前正在应用的自动配置以及原因,请使用--debug
开关启动应用程序。这样做可以启用一些选择的核心日志记录器的调试日志,并在控制台中输出状态报告。
4.2 禁用特定的自动配置类
如果发现正在应用某系不需要的特定自动配置类,则可以使用@SpringBootApplication
的exclude属性来禁用它们,如以下示例所示:
import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.autoconfigure.jdbc.*;
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
public class MyApplication {
}
如果该类不在classpath中,则可以使用注释的excludeName
属性,并指定完全限定名称。如果您更喜欢使用@EnableAutoConfiguration
而不是@SpringBootApplication
,也提供了exclude
和excludeName
。最后,您还可以使用spring.autoconfigure.exclude
属性来控制要排除的自动配置类的列表。
在注解级别和使用属性都可以用来定义排除项。
即使是自动配置类是
public
的,该类的唯一方面,视为公共API是该类的名称,名称是可被用于禁用自动配置。这些类的实际内容(例如,嵌套配置类或Bean方法)仅供内部使用,我们不建议直接使用它们。