博客
关于我
【Spring IOC容器】Bean的生命周期
阅读量:333 次
发布时间:2019-03-04

本文共 1789 字,大约阅读时间需要 5 分钟。

Bean的生命周期与Spring的管理

Bean的生命周期概述

在Spring应用中,Bean的生命周期可以理解为从Bean的创建到Bean的销毁的整个过程。这个过程通常由Spring容器管理,用户可以通过配置来定义Bean的生命周期各个阶段的行为。

Bean的标准生命周期

Spring的标准Bean生命周期主要包括以下几个阶段:

  • 通过构造器创建Bean实例(无参数构造)

    Bean可以通过调用无参数构造器来创建实例。如果Bean没有显式定义无参数构造器,Spring会自动为其生成。

  • 为Bean的属性设置值和其他Bean引用(调用set方法)

    用户可以通过配置文件或注解来设置Bean的属性值。此外,如果Bean引用了其他Bean,Spring会在初始化过程中自动处理这些引用。

  • 调用Bean的初始化方法

    用户可以定义一个初始化方法,Spring会在Bean初始化完成后调用这个方法。这个方法通常用于进行初始化操作,比如数据库连接、资源加载等。

  • Bean已经可以使用了(对象获取)

    在初始化完成后,Bean已经准备好可以使用。用户可以通过容器获取到Bean实例,并开始使用它。

  • 当容器关闭时,调用Bean的销毁方法

    当Spring容器关闭时,会自动调用Bean的销毁方法。用户可以定义一个销毁方法,用于释放资源或进行其他清理操作。

  • Bean的后置处理器

    Spring的后置处理器(BeanPostProcessor)可以扩展Bean的生命周期。在初始化之前和之后,可以通过实现BeanPostProcessor接口的方法来对Bean进行额外处理。

  • 实现BeanPostProcessor接口

    创建一个实现BeanPostProcessor接口的类,定义postProcessBeforeInitializationpostProcessAfterInitialization方法。

  • 在配置文件中注册后置处理器

    在Spring的配置文件中注册BeanPostProcessor类,Spring会自动将其应用到所有符合条件的Bean。

  • 添加后置处理器的逻辑

    postProcessBeforeInitialization方法中,可以在Bean初始化之前执行自定义逻辑;在postProcessAfterInitialization方法中,可以在Bean初始化之后执行自定义逻辑。

  • 单例与多例模式的对比

    在Spring中,Bean的作用范围可以通过scope属性来配置,主要有以下两种模式:

  • 单例模式(singleton)

    Bean仅有一个实例,由容器创建并管理。默认作用范围是singleton,适用于需要全局唯一性服务的场景。

  • 多例模式(prototype)

    每次请求时,容器都会创建一个新的Bean实例。适用于需要多个独立实例的场景。

  • 图1:单例模式的Bean生命周期

    Bean在容器关闭时会被销毁。

    图2:多例模式的Bean生命周期

    Bean的生命周期仅在其被获取时才会开始。

    图3:单例模式与多例模式的对比

    图4:单例与多例模式的默认行为

    懒加载(lazy-init)

    懒加载是指Bean的创建延迟到其首次被获取时。Spring支持懒加载,可以通过配置lazy-init属性来实现。

  • 懒加载的取值

    lazy-init属性的取值有三个:defaulttruefalse

  • 懒加载的定义

    lazy-init="true"时,Bean不会在容器初始化时创建,而是延迟到其首次被获取时创建。

  • 懒加载的优缺点

    • 优点:节省资源,减少内存占用。
    • 缺点:如果Bean在使用前没有被充分测试,可能会导致潜在问题的暴露。
  • 单例模式默认非懒加载

    在单例模式下,Bean会在容器初始化时就被创建。

    多例模式默认懒加载

    在多例模式下,Bean只有在首次被获取时才会被创建。

    通过合理配置lazy-init属性,可以优化Bean的资源使用,提升应用性能。

    总结

    Bean的生命周期是Spring管理中非常重要的一部分。理解Bean的创建、初始化、使用和销毁过程,有助于更好地利用Spring的功能。通过配置后置处理器、控制Bean的作用范围以及配置懒加载,可以进一步优化Bean的管理和性能表现。在实际应用中,合理地配置Bean的生命周期参数,可以显著提升Spring应用的稳定性和性能。

    转载地址:http://wfeq.baihongyu.com/

    你可能感兴趣的文章
    Oracle 返回结果集的 存储过程
    查看>>
    Oracle 递归
    查看>>
    Oracle 递归函数与拼接
    查看>>
    oracle 逻辑优化,提升高度,综合SQL上下文进行逻辑优化
    查看>>
    oracle 闪回关闭,关闭闪回即disable flashback的操作步骤
    查看>>
    oracle 限制用户并行,insert /*parallel */ 到不同用户,并行起不来的问题
    查看>>
    oracle--用户,权限,角色的管理
    查看>>
    Oracle-定时任务-JOB
    查看>>
    oracle.dataaccess 连接池,asp.net使用Oracle.DataAccess.dll连接Oracle
    查看>>
    oracle00205报错,Oracle控制文件损坏报错场景
    查看>>
    Oracle10g EM乱码之快速解决
    查看>>
    Oracle10g下载地址--多平台下的32位和64位
    查看>>
    Oracle10g安装了11g的ODAC后,PL/SQL连接提示TNS:无法解析指定的连接标识符
    查看>>
    oracle11g dataguard物理备库搭建(关闭主库cp数据文件到备库)
    查看>>
    Oracle11G基本操作
    查看>>
    Oracle11g服务详细介绍及哪些服务是必须开启的?
    查看>>
    Oracle11g静默安装dbca,netca报错处理--直接跟换操作系统
    查看>>
    oracle12安装软件后安装数据库,然后需要自己配置监听
    查看>>
    Oracle——08PL/SQL简介,基本程序结构和语句
    查看>>
    Oracle——distinct的用法
    查看>>