SpringBoot系列(二)启动原理解析

  • Post author:
  • Post category:其他


要想了解开一辆车首先你要知道,这辆车的驾驶座在哪,以及它是如何启动的。

接下来我们就一起了解一下SpringBoot的启动原理,之前说过这是SpringBoot入口

那么下面来看几个注解



—— @SpringBootApplication







我们不难发现@SpringBootApplication注解是由多个注解共同组成,其实重要的只有三个


  1. @Configuration

  2. @EnableAutoConfiguration

  3. @ComponentScan

下面简单介绍一下

@Configuration


在我看来


@Configuration就相当于配置文件中的<Beans>标签,与之相关的@Bean就相当于<Bean>,举个例子


配置类:





实体类:





测试类:





以上代码就相当于在xml文件中<Beans …><Bean></

Bean

><Beans…>,与传统Spring获得对象的方式一样


@EnableAutoConfiguration


启用Spring应用程序上下文的自动配置,配置你可能需要的bean,自动配置会尽可能的智能化去配置你可能需要的bean



@EnableAutoConfiguration是一个复合注解







其中最关键的是@Import({AutoConfigurationImportSelector.class}),借助

AutoConfigurationImportSelector

可以帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器。就像一只“八爪鱼”一样

借助于Spring框架原有的一个工具类:SpringFactoriesLoader的支持,@EnableAutoConfiguration可以智能的自动配置功效才得以大功告成!


自动配置幕后英雄:SpringFactoriesLoader详解



从classpath中搜寻所有的META-INF/spring.factories配置文件,并将其中org.springframework.boot.autoconfigure.EnableutoConfiguration对应的配置项通过反射(Java Refletion)实例化为对应的标注了@Configuration的JavaConfig形式的IoC容器配置类,然后汇总为一个并加载到IoC容器。






版权声明:本文为leng1235原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。