Spring原理
文章平均质量分 91
解析spring原理
qq_2306435674
这个作者很懒,什么都没留下…
展开
-
getPointcut()过程解析
springAOP获取切面对象这个过程中获取了切点对象pointcut,在Advisor获取解析中的getAdvisor()方法中通过调用getPointcut()方法得到切点对象1.获取当前方法对应的注释信息并将其封装为AspectJAnnotation对象2.实例化切点后利用封装好的信息对切点中信息进行赋值。原创 2023-10-11 14:52:07 · 90 阅读 · 1 评论 -
Advisor获取解析
实际spring源码中针对Advisors获取的功能在BeanFactoryAspectJAdvisorsBuilder类中实现;为了解析过程中的代码量,构建了一个SimulateBeanFactoryAspectJAdvisorsBuilder类,基本功能与BeanFactoryAspectJAdvisorsBuilder保持一致,删除了部分与当前目标功能无关代码.(后续解析过程中出现SimulateXXX的类均为模拟过程类,其基本功能均保持一致).原创 2023-10-11 13:14:19 · 36 阅读 · 1 评论 -
BeanFactory后处理器
/ 根据注解生成Bean名称// 创建BeanDefinition对象(目标class类的Bean定义)// 注册Bean对象。原创 2023-09-21 13:25:52 · 122 阅读 · 0 评论 -
Advisor与@Aspect解析
findEligibleAdvisors()会找到有资格的Advisors,同时会将高级切面类解析为低级切面类,将最终切面类结果封装在List中。内部调用findEligibleAdvisors()方法,并对返回结果进行判断,若返回集合不为空则表示需要为其创建代理。切面(aspect/advisor) = 切点(pointcut) + 通知(advice)原创 2023-09-28 13:39:33 · 85 阅读 · 0 评论 -
SpringAOP解析
SpringAOP是通过调用AnnotationAwareAspectJAutoProxyCreator类创建creator对象从而开始AOP功能,而具体执行的方法则是通过wrapIfNecessary()方法对目标类进行切面创建、代理生成等功能// 实例化creator// 初始化bean工厂// 创建代理过程。原创 2023-10-12 14:53:34 · 42 阅读 · 1 评论 -
切面配对解析
springAOP中wrapIfNecessary()方法可以获取所有的切面集合,然后根据当前传入bean对象对切面进行配对,配对过程则是通过findAdvisorsThatCanApply()方法实现// 获取候选Advisors对象(解析advisors实例)// 从所有advisor中,筛选出跟当前bean匹配的advisorif (!切面匹配的核心就是通过canApply()方法实现:1.根据切点表达式定位类与方法2.获取目标类及其接口类的方法3.匹配定位方法与目标方法。原创 2023-10-12 14:37:23 · 37 阅读 · 1 评论 -
切点匹配解析
PointCut的match()是在方法上进行匹配,即需要对类注解、接口注解进行特殊处理。底层切点实现调用AspectJExpressionPointcut()类进行匹配,而AspectJExpressionPointcut类实现了MethodMatcher()接口。针对匹配类上注解或接口上注解 使用StaticMethodMatcherPointcut() 重写matches()匹配规则。定位需要增强的方法(切点) + 增强内容(通知) 然后通过设置代理(创建代理)进行增强。原创 2023-09-27 15:29:53 · 55 阅读 · 1 评论