Spring 生命周期

Spring IOC 容器中 Bean 的生命周期如下:
①. 通过构造器或工厂方法创建 Bean 实例:调用构造器
②. 为 Bean 的属性设置值和对其他 Bean 的引用:调用 setter
③. 将 Bean 实例传递给 Bean 后置处理器的 postProcessBeforeInitialization 方法
④. 调用 Bean 的初始化方法:init-method
⑤. 将 Bean 实例传递给 Bean 后置处理器的 postProcessAfterInitialization方法
⑥. Bean 可以使用了
⑦. 当容器关闭时, 调用 Bean 的销毁方法:destroy-method。

  1. 自动装配 (bean标签的autowire属性):
    作用:不明确配置,自动将某个bean 注入到另一个bean的属性当中
    分类:
    (1)byname:通过id 的名字来进行匹配,
    (2)byType:通过类型来进行匹配
    (3)constructor:根据java 源程序中定义的构造方法,再根据类型进行匹配。
    (4)autodetect:完全交给spring管理, spring 则再根据constructor à byType的顺序进行匹配。
    注:
    自动装配的优先级低于手动装配
    自动装配一般应用于快速开发中,但是不推荐使用,代码简单,但是一方面容易出错,另一方面也不方便后期的维护

五:bean实例的生命周期及范围

  1. Bean的生命周期:
    (1)实例化(必须的)构造函数构造对象
    (2)装配(可选的)为属性赋值
    (3)回调(可选的)(容器-控制类和组件-回调类)
    (4)初始化(init-method=” “)
    (5)就绪
    (6)销毁(destroy-method=” “)

    1. bean的范围
      Bean:默认情况下,容器是按照单例的方式去创建的bean,如果不想使用那么用(scope=” “)定义bean的使用范围

      Bean的范围有(经常使用的是前两种):
      (1)Singleton:默认的
      (2)Prototype:每次取出的都是新的对象
      (3)Request:bean的生命周期和一个http请求一直
      (4)session:在一个会话周期中有效

ApplicationContext实现的默认行为就是在启动时将所有singleton bean提前进行实例化(也就是依赖注入)。提前实例化意味着作为初始化过程的一部分,ApplicationContext实例会创建并配置所有的singleton bean。通常情况下这是件好事,因为这样在配置中的任何错误就会即刻被发现(否则的话可能要花几个小时甚至几天)。

<bean id="testBean" class="com.fhx.TestBean">
该bean默认的设置为:

<bean id="testBean" class="com.fhx.TestBean" lazy-init="false">
lazy-init=”false” 立退加载, 表示spring启动时,立刻进行实例化。

你可能感兴趣的:(Spring 生命周期)