码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 理解Spring Bean的创建过程和生命周期


    Spring Bean的生命周期

    总体流程概述

    • 实例化
    • 属性赋值
    • 初始化
    • 销毁

    总体的流程图

    在这里插入图片描述

    实例化

    众所周知,Spring IOC将bean创建的工作转移给了Spring容器类,可以看作一个工厂,比较常见的容器类有BeanFactory和ApplicationContext(实现了BeanFactory接口,提供了更多功能,如国际化)。同时,容器类的底层可以简单的看作一个Map结构,key为beanname,value为bean实例。

    属性赋值

    对于构建的实例,我们需要设置属性。那么属性设置从哪里来?定义一个BeanDefinition类,里面包含class类型、方法的构造参数、bean的属性、scope等。同时考虑bean中包含其他bean时,Spring该如何处理?这就涉及到Spring的三级缓存了,这里不展开叙述。

    一般来说我们可以通过配置xml文件来配置bean的相关属性,这里就需要考虑如何读取xml文件。Spring中就定义了资源和资源加载器类,实现可以从文件系统、classpath以及网络等读取资源。

    同时Spring中还提供了BeanFactoryPostProcessor接口,实现在bean初始化前的bean属性的修改

    初始化

    初始化主要的过程就是执行InitializingBean接口中定义的afterPropertiesSet方法,在这过程中可以执行自定义的初始化方法。

    同时在bean初始化前后,Spring也提供两个比较重要的接口操作。第一个就是Aware接口,Aware接口使得bean获得感知的能力,例如知道创建自己的容器对象。第二就是BeanPostProcessor接口,提供了两个主要的方法,分别在bean实例化前后执行,实现对bean的修改操作,是实现AOP的关键。

    销毁

    和初始化相对应,执行的是DisposableBean接口的destroy方法,在这过程可以指定自定义的销毁方法。

    同时对于不同作用域的bean在此处的执行步骤也不同。

    参考:
    简化版的spring框架,对于理解ioc和aop很有帮助
    Spring Bean的生命周期

    作者水平有限,错误之处望指正

  • 相关阅读:
    GB28181设备控制和TeleBoot远程启动命令探究
    车载网络安全指南 概述(一)
    如何系统地学习Python
    自建zerotier服务——实现更快速安全的远程连接
    JG/T 194-2018 住宅厨房和卫生间排烟(气)道制品检测
    AtCoder ABC001C 風力観測题解及翻译(四舍五入)
    测试用例设计方法之正交法
    ln命令应用
    C++笔记 - - STL vector容器的使用和模拟实现
    PerfView专题 (第一篇):如何寻找 C# 热点函数
  • 原文地址:https://blog.csdn.net/weixin_40096160/article/details/125493084
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号