SpringBoot入门(2)

一、上一篇

  上一篇最后说到,可以把启动类放到非上级目录“@Componentscan这个注解后面指定扫描的包名(value=“com.zbb”)”,这里的value是一个数组,我们可以写多个目录,进行扫描。还有就是,如果有用(basePackage=“com.zbb”)也可以,可以是value也可以是basePackage,只是一个别名

二、自动配置

  SpringBoot 自动配置( auto-configuration)尝试根据你添加的jar依赖自动配置你的 spring 应用。例如,如果你的 classpath 下存在 HSQLDB ,并且你没有手动配置任何数据库连接beans,那么我们将自动配置一个内存型(in-memory)数据库。你可以通过将 @EnableAutoConfiguration 或者 @SpringBootApplication 注解添加到一个 @Canfiguration 类上来选择自动配置。

  注:你只需要添加一个 @EnableAutoConfiguration 注解。我们建议你将它添加到主 @Configuration 类上。

  自动配置是非侵占性的,任何时候你都可以定义自己的配置类来替换自动配置的特定部分,例如,如果你添加自己的 DataSource bean,默认的内嵌数据库支持将不被考虑。

  如果需要找出当前应用了哪些自动配置及应用的原因,你可以使用  debug 开关启动应用。这将会记录一个自动配置的报告并输出到控制台。

 

三、禁止自动配置

  如果发现应用了你不想要的特定自动配置类,你可以使用 @EnableAutoConfiguration 注解的排除属性来禁用它们。

 1 @EnableAutoConfiguration(exclude = {DataSourceAutoConfigurantion.class}) 

 

三、@SpringBootApplication

  很多 SpringBoot 开发者总是使用 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 注解他们的 main 类。由于这些注解被如此频繁的一块使用(特别是你遵循以上最佳实践时),SpringBoot 提供了一个方便的 @SpringBootApplication 选择。该注解等价于以默认属性使用 @Configuration、@EnableAutoConfiguration 和 @ComponentScan。

  我们来翻一下 @SpringBootApplication 的源码。它分别继承了3个注解

    1. @EnableAutoConfiguration

    2. @ComponentScan

    3. @SpringBootConfiguration(继承了 @Configuration 注解)

  所以它同时具备了 @ComponentScan 和 @EnableAutoConfiguration 的功能。

    

 

  我们再来看一下,@SpringBootConfiguration 实际上继承了 @Configuration 注解和功能。

    

posted @ 2018-03-27 12:43  贱小提莫  阅读(132)  评论(0编辑  收藏  举报