容器初始化主要做的事情

容 器 初 始 化 主 要 做 的 事 情

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

  首先读取注解与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为简单容器

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。

BeanFactory的方法

  getBean():根据名字获取Bean的实例

  getAliases():根据别名来获取Bean的实例

  isSingleton():校验Bean是否为单例创建

  isPrototype():校验Bean是否为多例创建

  getType():根据名字获取Bean实例的Class类型

BeanFactory的关系图:

 ListableBeanFactory:

  正如它的名字所示,该工厂的方法可以以列表(Listable)的形式提供Bean的相关信息。最大的特点就是可以批量的列出工厂生产的实例信息

  比如该工厂的getBeanDefinitionNames()方法,可以获取容器中所有的Bean名字

  getBeanDefinitionCount方法,可以获取容器中注册的BeanDefinition总数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kerry_x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值