16. 自动配置

    Spring Boot自动配置试图基于已经添加的jar依赖自动配置你的Spring 应用。例如,如果HSQLDB在你的classpath上,你就不用手动的配置任何数据库连接bean,之后Spring Boot自动配置一个内存数据库。

    你需要通过添加@EnableAutoConfiguration或者@SpringBootApplication注解到你的一个@Configuration类来使用自动配置。

    你应该只添加一个@SpringBootApplication或者@EnableAutoConfiguration注解。我们一般推荐你只添加一个或者另一个到你的主要的@Configuration类。

    16.1 逐步替换自动配置

    自动配置是非侵入性的。在任何时候,你可以定义自己的配置来替换自动配置的指定部分。举个例子,如果你添加自己的DataSource bean,默认的内嵌数据库支持会停用(back away)。

    如果你需要找出什么自动配置是当前在被应用的,为什么,用—debug开关启动你的应用。这么做为核心日志开启debug日志级别,并将conditions report输出 到控制台。

    16.2 禁用指定的自动配置类

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

    1. import org.springframework.boot.autoconfigure.*;
    2. import org.springframework.boot.autoconfigure.jdbc.*;
    3. import org.springframework.context.annotation.*;
    4.  
    5. @Configuration
    6. @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
    7. public class MyConfiguration {
    8. }

    如果该类没有在classpath上,你可以使用注解的excludeName属性并指定完整地合格的(qualified)名字。最后,你也可以控制自动配置类的列表来移除,通过使用spring.autoconfigure.exclude属性。

    你既可以在注解级别也可以使用属性定义移除项(exclusion)