Spring Bean生命周期执行流程

2023-05-16

Spring Bean生命周期执行流程

2023.3.31

Spring 生命周期可以分为五个阶段:创建前准备创建实例依赖注入容器缓存销毁实例

  • 创建前准备阶段

这个阶段主要的作用是:Bean 在开始加载之前,需要从上下文和相关配置中解析并查找 Bean 有关的扩展实现,比如像 init-method(容器在初始化 bean 时调用的方法)、destory-method(容器在销毁 bean 时调用的方法)。以及BeanFactoryPostProcessor 这类的 bean 加载过程中的前置和后置处理。这些类或者配置其实是 Spring 提供给开发者用来实现 Bean 加载过程中的扩展机制,在很多和 Spring 集成的中间件中比较常见,比如 Dubbo。

  • 创建实例阶段

这个阶段主要是通过反射来创建 Bean 的实例对象,并且扫描和解析 Bean 声明的一些属性。

  • 依赖注入阶段

如果被实例化的 Bean 存在依赖其他 Bean 对象的情况,则需要对这些依赖 Bean进行对象注入。比如常见的@Autowiredsetter 注入等依赖注入的配置形式。同 时 , 在 这 个 阶 段 会 触 发 一 些 扩 展 的 调 用 , 比 如 常 见 的 扩 展 类 :BeanPostProcessors(用来实现 bean 初始化前后的扩展回调)、InitializingBean(这个类有一个afterPropertiesSet(),这个在工作中也比较常见)、BeanFactoryAware 等等。

  • 容器缓存阶段

容器缓存阶段主要是把 bean 保存到容器以及 Spring 的缓存中,到了这个阶段,Bean 就可以被开发者使用了。这个阶段涉及到的操作,常见的有:init-method 这个属性配置的方法, 会在这个阶段调用。以 及 像BeanPostProcessors方 法 中 的 后 置 处 理 器 方 法 如 :postProcessAfterInitialization也会在这个阶段触发。

  • 销毁实例阶段

当 Spring 应用上下文关闭时,该上下文中的所有 bean 都会被销毁。如果存在 Bean 实现了 DisposableBean 接口,或者配置了 destory-method 属性,会在这个阶段被调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Bean生命周期执行流程 的相关文章

  • 实现map有序输出

    我们知道golang里的map是无序的 xff0c 不像python里的字典还可以对键值对顺序反序啥的 所以我们下面手动实现map的有序输出 xff0c 其实原理很简单 xff01 package main import 34 fmt 34
  • 三大框架-Spring

    一 概述 spring框架是以一个分层架构 有七个定义良好的模块组成 Spring模块构建在核心容器之上 核心容器定义了创建 配置和管理bean方式 1 Spring Core 核心容器 提供Spring的基本功能 2 SPring Con
  • Java——泛型和Io流

    目录 1 泛型 2 File对象 3 IO流 4 字节输入和输出流 5 缓存流 6 对象流 1泛型 1 1什么是泛型 1 泛型就是限制我们得数据类型 2 为什么使用泛型 我们原来在定义集合时 xff0c 是如下得定义方式 xff1a Lis
  • Spring框架入门学习笔记

    Spring概述 目录 Spring概述 IOC容器 概念 底层原理 Spring提供IOC容器实现两种方式 基于xml方式实现属性注入和对象创建 属性注入 xml注入集合属性 Spring中的bean类型 bean的作用域 bean的生命
  • &和&&的区别?

    amp 和 amp amp 都是Java中的逻辑运算符 xff0c 用于对两个布尔值进行逻辑运算 xff0c 但它们有着不同的特点和使用场景 xff0c 具体区别如下 xff1a 1 运算规则 amp 是按位与运算符 xff0c 它会对两个
  • MAC电脑GOland2022.2.1版本DEBUG问题

    在使用goland使用debug调试代码出现 API server listening at 127 0 0 1 56871 could not launch process debugserver or lldb server not f
  • Maven连接数据库

    1 创建一个maven项目 2 在resources中创建db properties配置文件和log4j properties日志的配置文件 db username 61 root db password 61 root db url 61
  • 关于vs2019网络问题解决方案

    首先将IPV4 的DNS设置为默认的114 114 114 114 xff0c 备用DNS为8 8 8 8 xff0c 若没有用 xff0c 则不勾选IPV6 xff0c 亲测有效 这个问题曾经也困扰了我好几个月 xff0c 甚至都想换掉v
  • Spring Boot启动器

    文章目录 Spring Boot启动器简介自定义springboot启动器命名规约自定义starter步骤1 创建一个Spring boot项目2 导入pom3 编写配置类4 在resources META INF目录下新建spring f
  • web开发入门

    在vscode中输入英文 xff0c 按tab键 xff0c 叩可显示html5的框架 搭建好框架之后 xff0c 再进行局部设计即可制作一张简易静态网页
  • springboot学习笔记

    http t csdn cn aLaeJ
  • spring中的annotation简介

    1 注解介绍 注解 xff0c 是一种用来描述数据的数据 比如说 64 override表示我们重载父类函数 如果我们不用这个注解 xff0c 程序也能执行 xff0c 但是我们加了这个注解代表我告诉编译器这个方法是一个重写的方法 如果父类
  • C语言中如何使用字符数组和字符型指针变量

    案例一 使用字符数组统计字符串的长度以及实现字符串的反转 参考代码 xff1a include lt stdio h gt include lt stdlib h gt include lt string h gt int main cha
  • 拓扑排序详解

    提示 xff1a 古人学问无遗力 少壮功夫老始成 xff0c 纸上得来终觉浅 觉知此事须躬行 文章目录 一 AOV网的特点二 问题三 拓扑排序四 拓扑排序的方法五 检查AOV网中是否存在一个环六 两种思路6 1 思路一6 1 1 思路一代码
  • Altium Designer——设置电源线规则

    1 创建类来新建规则 执行菜单Design Classes 快捷键DC 将这多个网络建立一个class 执行菜单命令Design Rules 快捷键DR xff09 xff0c 进入规则设置栏 xff1b 新建个线宽规则 xff0c 在规则
  • 【Archlinux】(3) —— dwm+st+firefox+fcitx=愉快上网

    Archlinux dwm 43 st 43 firefox 43 fcitx 61 愉快上网 1 dwm窗口管理器2 ST简单终端3 firefox浏览器4 fcitx中文输入法参考资料 注意 后的命令是root用户和普通用户均可以的操作
  • idea创建maven项目产生卡死问题

    2021版idea创建maven项目时卡死问题解决 xff1a 问题描述 xff1a 在file project structure中新建maven的modules时 xff0c 点击finish后idea会卡死 xff0c 其他人有的说要
  • SpringBoot配置环境

    typora copy images to upload 微服务架构 第一个Spring Boot程序 jdk 1 8maven 3 6 1springboot 最新版IDEA 修改端口号 banner banner在线制作网站 Sprin
  • 【坑】导入项目报错Could not find com.android.tools.build:gradle:7.4.0

    报错的图没得了 xff0c 反正就是Could not find com android tools build gradle 7 4 0 这个报错解决思路 xff1a 1 首先导入项目你不要直接File Open xff0c 你要FIle
  • 通过adb命令安装卸载apk

    一 安装apk xff1a 1 正常安装APK adb install xxxx apk 2 覆盖安装APK adb install r xxxx apk 2 安装测试APK adb install t xxxx apk 3 组合使用 ad

随机推荐

  • 使用VNC远程连接云服务器,连接超时问题

    这里用的本地VNC工具为VNC viewer xff0c 使用的服务器为腾讯云CentOS服务器 已经在服务器端完成了图形化界面的安装以及开启vncserver xff0c 但是无法连接 已经创建完成vnc的服务器端 开启vnc命令 vnc
  • Spring框架的知识整理(项目流程)以及SSM框架的整合

    前言 上一篇文章我们发表Mybatis框架的学习心得 xff0c 以及针对一个项目而言说了一些流程 Spring学习的时候我们需要知道它的两个核心功能Ioc Aop xff0c 本文今日对Ioc做重点解释 Ioc功能阐述 Ioc 主要是一个
  • Ubuntu安装文件

    安装Java 首先在官网下载linux版本的jdk 然后传给linux xff0c 在解压到 usr local目录下 xff0c 在进入 url local目录 xff0c 并完成环境配置 tar zxvf jdk 8u331 linux
  • 快速排序(java实现)

    快速排序的思想 在一个无序的数组中 xff0c 取最后的一个数字为基准值 xff0c 在经过一次排序后 xff0c 使得改无效而的数组中 xff0c 小于基准值的在左侧 xff0c 等于基准值的在中间 xff0c 大于基准值的在右侧 假设一
  • 使用websocket实现服务端主动发送消息到客户端

    平时我们都是由客户端浏览器主动发送请求到服务端 xff0c 然后服务器处理请求后返回结果 xff0c 服务器无法主动向客户端浏览器发送消息 但是在某些业务场景下我们需要由服务器主动发送消息到客户端浏览器 xff0c 如当客户用户下订单后 x
  • Day01-Vue的基本格式

    创建Vue实例传入的options 我们在创建Vue的时候 xff0c 会传入一个对象options 这个options包含哪些选项 xff1f 目前掌握这些选项 el 类型 xff1a string HTMLElement xff08 表
  • LAMP架构超详细搭建步骤

    LAMP介绍 xff1a Linux 43 Apache 43 Mysql MariaDB 43 Perl PHP Python一组常用来搭建或者服务器的开源软件 xff0c 本身都是各自独立的程序 xff0c 但是因为常被放在一起使用 x
  • ViewBinding的简单使用

    我们知道ButterKnife已经过时 首先开启viewBinding xff1a android viewBinding enabled 61 true 之后在Activity中操作 span class token keyword pa
  • linux系统下防火墙的使用以及开通端口

    1 基本使用 启动 xff1a systemctl start firewalld 关闭 xff1a systemctl stop firewalld 查看状态 xff1a systemctl status firewalld 开机禁用 x
  • 如何让自己电脑的cmd看起来更美观

    一 快速切换cmd字体颜色 xff08 暂时性 xff09 打开cmd输入color 02 二 永久性切换cmd文字颜色 打开cmd xff0c 在标题栏处鼠标右键选择属性 选择颜色 xff0c 切换自己喜欢的颜色 xff0c 点击确定即可
  • Android 音频开发——Radio Hal服务(三)

    nbsp nbsp nbsp nbsp nbsp nbsp nbsp 上一篇文章主要介绍了 BroadcastRadioService 的启动 这一篇我们介绍以下Radio Hal 层的服务 一 Radio模块的加载 nbsp nbsp n
  • java锁策略和synchronized锁机制

    一 常见的锁策略 1 乐观锁 vs 悲观锁 锁的实现者 xff0c 预测接下来的锁冲突概率大不大 xff0c 根据这个概率决定接下来该做什么 乐观锁 xff1a 预测冲突不大 xff0c 做的工作少一些 xff0c 效率更高一些 悲观锁 x
  • 【蓝桥杯java-学习笔记】单词中出现次数最多的字母和次数

    字符串 输入描述 输入一行包含一个单词 xff0c 单词只由小写英文字母组成 hello 输出描述 输出两行 xff0c 第一行包含一个英文字母 xff0c 表示单词中出现得最多的字母是哪 个 如果有多个字母出现的次数相等 xff0c 输出
  • 解决Use ‘docker scan‘ to run Snyk tests against images to find vulnerabilities and learn how to fix

    解决方法 在终端输入 xff1a sudo export DOCKER SCAN SUGGEST 61 false
  • 子集全排列组合数问题(带你轻松拿捏十一道OJ题)

    目录 一 子集 二 子集II 三 全排列 四 全排列II 五 字符全排列 六 字符串大小全排列 七 组合总和 八 组合总和II 九 组合总和III 十 组合总和IV 十一 递增子序列 一 子集 剑指 Offer II 079 所有子集 力扣
  • 操作系统笔记(本科必修课)

    1 操作系统概论 1 1 定义 操作系统是计算机系统中的一个系统软件 xff0c 是一些程序模块的集合 能以尽量有效 合理的方式组织和管理计算机的软 硬件资源 xff0c 合理的组织计算机的工作流程 xff0c 控制程序的执行并向用户提供各
  • linux远程登录

    ssh实验 1 两台机器 xff1a 第一台机器作为客户端 xff0c 第二台机器作为服务器 xff0c 在第一台使用rhce xff08 我用的是user1用户 xff09 用户免密登录第二台机器 2 禁止root用户远程登录和设置三个用
  • Spring的工作流程

    经过十多天的学习 xff0c 我的脑海中开始对spring框架有了基本的认识 首先我了解了spring框架的几个基本的常见的类 xff1a BeanFactory BeanDefinition BeanFactoryPostProfesso
  • 【爬虫】2.5 BeautifulSoup使用 CSS 语法查找元素

    1 使用 CSS 语法 BeautifulSoup 除了可以使用 find 与 find all 函数查找 HTML 文档树的结点元素外 xff0c 还可以采用 CSS 类似的语法来查询 xff0c 规则是 xff1a tag select
  • Spring Bean生命周期执行流程

    Spring Bean生命周期执行流程 2023 3 31 Spring 生命周期可以分为五个阶段 xff1a 创建前准备 创建实例 依赖注入 容器缓存 销毁实例 创建前准备阶段 这个阶段主要的作用是 xff1a Bean 在开始加载之前