2025.02.25笔记 ~ langhai

林书豪
2025-02-25 19:42:06
2025.02.25笔记 浪海值:174度
文章标签:java基础面试题
文章摘要:2025.02.25笔记
使用新的显示器:新的显示器 如果遇到图片单击即可放大/缩小。

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的位置开始查找并且执行的。




提交评论