IOC、AOP、Bean的生命周期
IOC
简单说
- 准备Spring的上下文环境ApplicationContext
- 扫描XML文件和注解, 得到一系列Bean的定义
- 根据Bean进行实例化, 依赖注入
- 把Bean放到容器Map里面
详细说
- 准备Spring的上下文环境
- 比如XMLWebApplicationContext、AnnotationConfigApplicationContext, 准备去扫描XML文件和注解
- 这些就是ApplicationContext底层主要接口是BeanFactory, 这个工程是生成Bean的核心接口
- 扫描XML文件和注解
- 得到一个个BeanDefinition对象, 得到得是Bean的定义, 比如得到Bean的类、依赖关系、属性
- 根据Bean进行实例化, 依赖注入
- Spring的ApplicationContext先生成一个DefaultListableBeanFactory的Bean工厂, Bean工厂基于BeanDefination创建Bean, 只生成单例模式的Bean, 不会生成原型Bean
- 生成Bean的过程主要分: 实例化一个Bean、完成依赖注入把Bean之前的关系补起
- 把Bean放到容器Map里面
AOP
底层原理: 动态代理
针对普通类: 通过CGLib
针对实现接口的类: 使用Java原生动态代理来实现的, 由于Java原生动态代理的局限性
-- 只能通过继承Proxy类才能实现动态代理, 而Java又是单继承模式的, 这个类假如继承了别的类就不能使用Java原生动态代理实现了
生命周期
- 准备Spring的上下文环境
- 比如XMLWebApplicationContext、AnnotationConfigApplicationContext, 准备去扫描XML文件和注解
- 扫描XML文件和注解
- 得到一个个BeanDefinition对象, 得到得是Bean的定义, 比如得到Bean的类、依赖关系、属性
- BeanFactory后置处理
- 调用BeanFactoryPostProcessor后置处理器, 对BeanDefinition要做一些处理, 对一些属性进行设置、替换
- Bean的实例化
- 采用反射机制把Bean对象创建出来
- Bean的初始化
- 对Bean的依赖关系进行属性的注入
- Bean的后置处理
- 调用BeanPostProcessor后置处理器, 对Bean进行后置处理, 比如AOP的操作, 对类进行切面增强
- 放入Bean容器
- Bean销毁
- 当SpringApplicationContext要关闭的时候对Bean进行销毁, 主要调用DisposableBeanFactory销毁Bean工厂、或者Bean的destroy方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律