我是
方圆
愿你三冬暖,愿你春不寒
文章目录
- 1. SpringIOC图解
- 2. SpringIOC支持的功能
- 3. SpringIOC容器的核心接口
- 3.1 简要了解
- 3.2 主要了解
- 4. IOC中getBean方法的代码逻辑
- 5. SpringBean的作用域
- 6. SpringBean的生命周期
- 7. SpringAOP(面向切面编程,动态代理织入)
- 7.1 Advice的种类
- 7.2 AOP的实现:JdkProxy和Cglib
- 7.2.1 JdkProxy
- 7.2.2 Cglib
- 7.3 代理模式详解
1. SpringIOC图解
2. SpringIOC支持的功能
依赖注入
自动装配
- 依赖检查
- 支持集合
- 指定初始化方法和销毁方法
- 支持回调方法
3. SpringIOC容器的核心接口
3.1 简要了解
BeanDefinition
:用来描述Bean定义BeanDefinitionRegistry
:提供向IOC容器注册BeanDefinition对象的方法
3.2 主要了解
-
BeanFactory
BeanFactory是Spring最核心的接口,是Spring框架的基础设施,面向的是Spring -
ApplicationContext
Application实现多个接口,面向的是使用Spring框架的开发者
4. IOC中getBean方法的代码逻辑
- 转换BeanName
- 从缓存中加载实例
- 实例化Bean
- 检测parentBeanFactory
- 初始化依赖的Bean
- 创建Bean
5. SpringBean的作用域
Singleton
:Spring的默认作用域,容器里拥有唯一的Bean实例Prototype
:针对每个getBean的请求,容器都会创建一个新的Bean实例request
:会为每一个Http请求创建一个Bean实例session
:会为每一个Session创建一个Bean实例globalSession
:回味每个全局Http Session创建一个Bean实例
6. SpringBean的生命周期
创建过程
销毁过程
- 若实现了DisposableBean接口,则会调用destory方法
- 若配置了destry-method属性,则会调用其配置的销毁方法
7. SpringAOP(面向切面编程,动态代理织入)
- 通用化功能代码的实现,对应的就是所谓的切面
- 业务功能代码和切面代码分开后,架构将变得高内聚、低耦合
- 确保功能的完整性,切面最终会被合并到业务中
7.1 Advice的种类
- Before:前置通知
- AfterReturning:后置通知
- AfterThrowing:异常通知
- After:最终通知
- Around:环绕通知
7.2 AOP的实现:JdkProxy和Cglib
- 由AOP ProxyFactory根据Advised Support对象的配置来决定
- 如果目标类是接口,则使用JdkProxy,否则使用Cglib
7.2.1 JdkProxy
- JDK Proxy核心是
InvocationHandler接口和Proxy类
- JDK Proxy通过Java内置的
反射机制
实现 - 反射机制在
生成类的过程
中比较高效
7.2.2 Cglib
- Cglib以
继承的方式
动态生成目标类的代理 - Cglib借助
ASM机制
实现 - ASM在生成类后的
执行过程
比较高效
7.3 代理模式详解
大家可以看我之前写过一篇博客
最好理解的代理模式
这篇文章到这里就完了,感谢您的阅读,笔者水平有限,欢迎大家赐教