SpringBoot揭秘学习笔记-02回顾与探索spring框架的本质

一、spring框架起源

        spring框架诞生于“黑暗”的EJB时代,沉重的开发模式令当时的开发者痛苦不堪。Rod Johnson写书抨击这种重量级的规范,并提出了轻量级的开发规范---最初版的spring框架。

二、springIOC

        IOC(Inversion Of Control)不等于DI(Dependency Injection),IOC一共有两种实现方式,分别是DI和DL,DL就是Dependency Lookup(依赖查找)。DI:实体被动接受其依赖的其他组件被IOC容器注入;DL:实体主动去某个服务注册地查找其依赖的那些服务。

SpringBoot揭秘学习笔记-02回顾与探索spring框架的本质

DI(依赖注入)步骤:

阶段一:收集和注册

                通过xml和java代码定义bean,然后手动组装或者让容器基于某些机制自动扫描,将bean定义收集到IOC容器中。

阶段二:分析和组装

                分析IOC容器中的bean,根据之间的依赖关系先后组装他们。如果IOC容器发现某一个bean依赖另一个bean,他们就会将另一个bean注入给依赖他的那个bean,直到所有的bean都注入完成IOC工作完成。

 

三、高曝光率的Annotation

      ①@ComponentScan(组件扫描)

         通过 basePackages等属性来定制@ComponentScan的自动扫描范围,如果不指定,spring框架会默认扫描@ComponentScan声明所在类的包。

       ②@PropertySource和PropertySources

           @PropertySource用于从某些地方加载“*.properties”文件,并将其中的属性加载到IOC容器中,便于填充bean定义属性的占位符。java8以及更高版本可以并行声明多个@PropertySource,java8以下的版本需要使用PropertySources来声明多个@PropertySource。

        ③@Import和@ImportResource

          @Import负责引入javaConfig形式的定义的IOC容器配置,@ImportResource引入xml形式的配置