容器初始化主要做的事情

 

容 器 初 始 化 主 要 做 的 事 情

 

容器初始化主要做的事情

 

 

 

 

 

容器的初始化的主要运行流程如下:

  首先读取注解与xml配置文件,将这些配置文件载入到内存中,在内存中这些配置文件会被当作一个个的Resource对象,

  之后这些对象会被解析成BeanDefinition实例,在最后注册到Spring的容器中

 

 

 

 


 

 

 

首先我们介绍一下Bean与BeanDefinition的关系:

  1.Bean是Spring的一等公民(核心)

    1.1:Bean的本质就是Java对象,只是这个对象的声明周期由容器来管理

    1.2:不需要为了创建Bean而在原来的Java类上添加任何额外的限制(侵入性极低)

      1.3:对Java对象的控制方式体现在配置上(如:注解、xml配置文件)

 

 

  2.BeanDefinition(Bean的定义):根据配置,生成用来描述Bean的BeanDefinition

    常用属性:

      作用范围scope(@Scope) 

      懒加载lazy-init(@Lazy):决定Bean实例是否延迟加载

      首选primary(@Primary) : 设置为true的Bean会是优先的实现类

      factory-bean和factory-method(@Configuration和@Bean)      

 

BeanDefinition关系图:  

容器初始化主要做的事情

 

 

 

 

1.在Spring中大量运用到了模板模式,图中我们可以看到BeanDefinition是一个接口来的。其定义了主要的功能抽象接口。其主要的实现类有图中三个(RootBeanDefinition、GenericBeanDefinition、ChildBeanDefinition)

2.在Spring2.5之前大部分但是使用的RootBeanDefinition实现类,在2.5版本后出现了GenericBeanDefinition实现类,随之该实现类成了主流。

注:

(在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式)

 

 

 

 


 

BeanFactory的介绍

Spring中要求所有的Ioc容器都要实现BeanFactory接口(org.springframework.beans.factory)

BeanFactory是一个*的接口,其内部定义了一个String类型的变量,该变量主要用来获取FactoryBean的实例

容器初始化主要做的事情

该变量的使用例子:

 容器初始化主要做的事情

 

 容器初始化主要做的事情

 

 

BeanFactory和FactoryBean的区别:

  BeanFactory:

    它是Spring容器的根接口,定义了Bean工厂的最基础的功能特性。是用作Spring中管理Bean的容器。

  FactoryBean:

    它的本质也是一个Bean,但是这个Bean不像Service和Dao一样用来注入使用的,它的作用是用来生成这些普通的Bean的。

    实现了该接口后呢,Spring容器在初始化时,会把实现了这个接口的Bean取出来,然后使用这个Bean中的getObject()方法生成我们想要的Bean。

 

上一篇:转:PHP中的使用curl发送请求(GET请求和POST请求)


下一篇:Spring-ListableBeanFactory