2025.02.25笔记 ~ langhai

2025-02-25 19:42:06
2025.02.25笔记
Spring 中 用到的设计模式?
单例模式:bean默认都是单例的
原型模式:指定作用域为prototype
工厂模式:BeanFactory
模板方法:postProcessBeanFactory onRefresh initPropertyValue
策略模式:XmlBeanDefinitonReader PropertiesBeanDefinitionReader
观察者模式:listener event multicast
适配器模式:Adapter
装饰者模式:BeanWrapper
责任链模式:使用aop的时候会先生成一个拦截器链
代理模式:动态代理
委托者模式:delegate
Spring的AOP的底层实现原理?
aop是ioc的一个扩展功能,现有的ioc,再有的aop,只是在ioc的整个流程中新增的一个扩展点而已。BeanPostProcessor
bean的创建过程中有一个步骤可以对bean进行扩展实现,aop本身就是一个扩展功能,所以在BeanPostProcessor的后置处理方法中来进行实现。
代理对象的创建过程(advice 切面 切点)
通过jdk或者cglib的方法来生成代理对象
在执行方法调用的时候,会调用到生成的字节码文件中,直接会找到DynamicAdvisedInterceptor类中的intercept方法,从此方法开始执行
根据之前定义好的通知来生成拦截器链
从拦截器链中依次获取每一个通知开始进行执行,在执行过程中,为了方便找到下一个通知是哪个,会有一个CglibMethodInvocation的对象,找的时候是从-1的位置开始查找并且执行的。