当前位置: 首页 > news >正文

Spring源码:核心类的介绍

1. 前言

        核心类代表了Spring框架中最基本的组件和功能,通过介绍这些类,学习者可以更好地理解Spring框架的核心工作原理和关键组件之间的关系。同时,了解这些核心类有助于学习者深入掌握Spring框架的使用和扩展方法。

2. ApplicationContextInitializer

        ApplicationContextInitializer用于IOC创建完成后自动调用其中的initialize类,作用:可以给context上下文注入一些环境属性。

上下文指的是应用程序的运行环境、配置信息、依赖关系等内容。

3.ApplicationListener

ApplicationListener就是一个监听器,其中的参数event可以通过类型判断是什么类型时间触发的,按照你进行指定的逻辑即可。

4. BeanFactory 

BeanFactory用于Bean对象的管理,比如创建、配置、依赖注入功能。

实现类DefaultListableBeanFactory:bean的创建配置都会被委托到这个对象。(实际干活的)

5. BeanDefinition

BeanDefinition封装了Bean的所有属性信息。

当 Spring 容器启动时,会读取配置文件或者扫描注解,解析出各个 Bean 的配置信息,并将其封装成对应的 BeanDefinition 对象。Spring 容器根据 BeanDefinition 中的信息,实例化、初始化和配置 Bean 对象,然后将其放入容器中管理。

5.1 继承体系

5.2 BeanDefinitionMap

BeanDefinitionMap是:管理应用程序中所有Bean的定义,包括Bean的名称、类型、作用域、依赖关系等元数据信息。

  • 键:bean对象的名称
  • 值:BeanDefinition的对象

6. BeanFactoryPostProcessor


BeanFactoryPostProcessor主要用于给bean工厂新增BeanDefinition,有了这个BeanDefinition后bean工厂就会帮我们自动创建一些bean对象。

BeanFactoryPostProcessor 的生命周期位于:Bean工厂实例化完毕,但bean还没有初始化

一些常用的实现类,也是一些约定大于配置的原因 

7. Aware

Aware是一种接口,它允许Bean意识到其所在的环境。这个接口被设计为在Bean实例化后,Spring容器通过回调相应的Aware接口方法来提供一些特定的信息给Bean。

Bean工厂在去实例化Bean的时候,会检测你有没有实现Aware接口,如果你实现了,我就回调你实现的方法。

8. InitializingBean/DisposableBean

两个生命周期接口:

  1. InitializingBean是Bean初始化的方法
  2. DisposableBean是销毁Bean的方法
     

9. BeanPostProcessor 

BeanPostProcessor是Bean对象的后置处理器,生命周期在Bean对象初始化前后

常用的实现类:

http://www.lryc.cn/news/370162.html

相关文章:

  • 文化融合,市场共赢:品牌海外推广中的符号与象征策略
  • fabric.util.enlivenObjects是什么意思
  • 几个阶段性的面试难点整理
  • CTFHUB-技能树-web-信息泄露
  • 面试计算机网络八股文十问十答第八期
  • 0605-JavaSE-单例模式-饿懒汉模式
  • TCP和UDP区别
  • [Shell编程学习路线]——编制第一个shell脚本入门篇
  • python数据处理分析库(一)
  • 使用Transformer进行抄袭检测
  • 基于深度学习的电池健康状态预测(Python)
  • 【吊打面试官系列-Mysql面试题】MySQL 如何优化 DISTINCT?
  • 企业IT运维管理体系-总体规划
  • RabbitMQ-Stream(高级详解)
  • Web前端图片并排显示的艺术与技巧
  • 豆瓣电影信息爬虫【2024年6月】教程
  • Flutter- AutomaticKeepAliveClientMixin 实现Widget保持活跃状态
  • 《计算机组成原理》期末复习题节选
  • NSSCTF中的popchains、level-up、 What is Web、 Interesting_http、 BabyUpload
  • 量产维护 | 芯片失效问题解决方案:从根源找到答案
  • Linux忘记密码的解决方法
  • 数据结构(DS)学习笔记(二):数据类型与抽象数据类型
  • 【C++进阶】模板与仿函数:C++编程中的泛型与函数式编程思想
  • 华安保险:核心系统分布式升级,提升保费规模处理能力2-3倍 | OceanBase企业案例
  • 佐西卡在美国InfoComm 2024展会上亮相投影镜头系列
  • 【权威出版/投稿优惠】2024年智慧城市与信息化教育国际会议(SCIE 2024)
  • Android 应用程序 ANR 问题分析总结
  • 爬虫案例:建设库JS逆向
  • 基于springboot的酒店管理系统源码数据库
  • Web前端开发 - 5 - JavaScript基础