0. Spring 基础

BeanDefinition

BeanDefinition 表示 Bean 定义:

  1. Spring根据BeanDefinition来创建Bean对象;
  2. BeanDefinition有很多的属性用来描述Bean;
  3. BeanDefiniton是Spring中非常核心的概念。
  4. BeanDefiniton中重要的属性:
    a. beanClass:表示一个bean的类型,比如:UserService.class、OrderService.class,Spring在创建Bean的过程中会根据此属性来实例化得到对象;
    b. scope:表示一个作用域(Spring中有五种作用域),比如:singleton、prototype分别标识单例Bean、原型Bean;
    c. isLazy:表示一个Bean是不是需要懒加载,原型bean和isLazy属性不起作用,懒加载的单例bean,会在第一次getBean的时候生成该bean,非懒加载的单例bean,则会在spring启动的过程中直接生成好;
    d. dependsOn:表示一个bean在创建之前所依赖的其他bean得先全部创建好;
    e. primary:表示一个bean是主bean,在spring中一个类型可以有个bean对象,在进行依赖注入时,如果根据类型找到了多个bean,此时会判断这些bean中是否存在一个主bean,如果存在,则直接将这个bean注入给属性;
    f. initMethodName:表示一个bean的初始化方法,一个bean的生命周期过程中有一个步骤叫初始化,spring会在这个步骤中去调用bean的初始化方法,初始化逻辑由程序员自己控制,表示程序员可以自定义逻辑对bean进行加工。

Spring中的五种作用域

  1. singleton:在spring IoC容器仅存在一个Bean实例,Bean以单例方式存在,默认值
  2. prototype:每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行newXxxBean()
  3. request:每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境
  4. session:同一个HTTP Session共享一个Bean,不同Session使用不同的Bean,仅适用于WebApplicationContext环境
  5. globalession:一般用于Portlet应用环境,该作用域仅适用于WebApplicationContext环境

BeanFactory

  1. BeanFacory 是一种Spring容器;
  2. BeanFacory 直译过来就是Bean工厂,它可以用来创建Bean、获取Bean;
  3. BeanFactory是Spring中非常核心的组件。

FactoryBean 和 BeanFactory 区别?

  1. BeanFactory:Bean工厂,是一个工厂(Factory),Spring IoC容器 的最高层接口就是BeanFactory,它的作用是管理Bean,即实例化、定 位、配置应用程序中的对象及建立这些对象之间的依赖。
  2. FactoryBean:工厂Bean,是一个Bean,作用是产生其他Bean实 例。这种Bean没有什么特别的要求,仅需要提供一个工厂方法,该方法 用来返回其他 Bean 实例。在通常情况下,Bean 无须自己实现工厂模 式,Spring容器担任工厂的角色;在少数情况下,容器中的Bean本身就 是工厂,其作用是产生其他Bean实例。 当用户使用容器时,可以使用转义字符“&”来得到FactoryBean本 身,以区别通过FactoryBean产生的实例对象和FactoryBean对象本身。 在BeanFactory中通过如下代码定义了该转义字符:FACTORY_BEAN_PREFIX = “&”

BeanDefiniton、BeanFactory、Bean对象之间的关系?

  1. BeanFactory将利用BeanDefinition来创建Bean对象;
  2. BeanDefinition相当于原材料、Bean对象相当于生产出来的产品,BeanFactory相当于工厂;

BeanFactory核心子接口和实现类

  1. ListableBeanFactory:它可以枚举所有 bean 实例,而不是按照客户的要求逐个尝试按名称查找 bean。预加载所有 bean 定义的 BeanFactory 实现可以实现此接口。
  2. ConfigurableBeanFactory:大多数bean工厂要实现的配置接口。除了BeanFactory 接口方法之外,还提供了配置 bean 工厂的工具。
  3. AutowireCapableBeanFactory:由能够自动装配的 bean 工厂实现,前提是他们希望为现有的 bean 实例公开此功能。
  4. AbstractBeanFactory:抽象基类,提供 ConfigurableBeanFactory SPI 的全部功能。也可以用作 bean 工厂实现的基类,这些实现可以从 resource 资源获取 bean 定义。
  5. DefaultListableBeanFactory:核心实现类

Bean的生命周期

  1. Bean生命周期用来描述Spring中一个Bean创建、销毁过程中所经历的步骤,其中Bean创建过程是重点。
  2. 可以利用Bean生命周期机制对Bean进行自定义加工。

核心步骤

  1. BeanDefintion
  2. 构造方法推断
  3. 实例化(反射)
  4. 属性填充
  5. 初始化
  6. 初始化后
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值