- 博客(9)
- 收藏
- 关注
原创 SpringAOP解析
SpringAOP是通过调用AnnotationAwareAspectJAutoProxyCreator类创建creator对象从而开始AOP功能,而具体执行的方法则是通过wrapIfNecessary()方法对目标类进行切面创建、代理生成等功能// 实例化creator// 初始化bean工厂// 创建代理过程。
2023-10-12 14:53:34
37
1
原创 切面配对解析
springAOP中wrapIfNecessary()方法可以获取所有的切面集合,然后根据当前传入bean对象对切面进行配对,配对过程则是通过findAdvisorsThatCanApply()方法实现// 获取候选Advisors对象(解析advisors实例)// 从所有advisor中,筛选出跟当前bean匹配的advisorif (!切面匹配的核心就是通过canApply()方法实现:1.根据切点表达式定位类与方法2.获取目标类及其接口类的方法3.匹配定位方法与目标方法。
2023-10-12 14:37:23
31
1
原创 getPointcut()过程解析
springAOP获取切面对象这个过程中获取了切点对象pointcut,在Advisor获取解析中的getAdvisor()方法中通过调用getPointcut()方法得到切点对象1.获取当前方法对应的注释信息并将其封装为AspectJAnnotation对象2.实例化切点后利用封装好的信息对切点中信息进行赋值。
2023-10-11 14:52:07
82
1
原创 Advisor获取解析
实际spring源码中针对Advisors获取的功能在BeanFactoryAspectJAdvisorsBuilder类中实现;为了解析过程中的代码量,构建了一个SimulateBeanFactoryAspectJAdvisorsBuilder类,基本功能与BeanFactoryAspectJAdvisorsBuilder保持一致,删除了部分与当前目标功能无关代码.(后续解析过程中出现SimulateXXX的类均为模拟过程类,其基本功能均保持一致).
2023-10-11 13:14:19
29
1
原创 Advisor与@Aspect解析
findEligibleAdvisors()会找到有资格的Advisors,同时会将高级切面类解析为低级切面类,将最终切面类结果封装在List中。内部调用findEligibleAdvisors()方法,并对返回结果进行判断,若返回集合不为空则表示需要为其创建代理。切面(aspect/advisor) = 切点(pointcut) + 通知(advice)
2023-09-28 13:39:33
76
原创 切点匹配解析
PointCut的match()是在方法上进行匹配,即需要对类注解、接口注解进行特殊处理。底层切点实现调用AspectJExpressionPointcut()类进行匹配,而AspectJExpressionPointcut类实现了MethodMatcher()接口。针对匹配类上注解或接口上注解 使用StaticMethodMatcherPointcut() 重写matches()匹配规则。定位需要增强的方法(切点) + 增强内容(通知) 然后通过设置代理(创建代理)进行增强。
2023-09-27 15:29:53
48
1
原创 BeanFactory后处理器
/ 根据注解生成Bean名称// 创建BeanDefinition对象(目标class类的Bean定义)// 注册Bean对象。
2023-09-21 13:25:52
41
原创 天池阿里云 - 零基础入门NLP - 新闻文本分类
天池阿里云 - 零基础入门NLP - 新闻文本分类前言赛题理解数据观察特征工程模型构建结果分析前言本次的比赛分析是基于天池阿里云的零基础入门NLP比赛。比赛连接:https://tianchi.aliyun.com/competition/entrance/531810/information赛题理解赛题以新闻数据为赛题数据,数据集报名后可见并可下载。赛题数据为新闻文本,并按照字符级别进行匿名处理。整合划分出14个候选分类类别:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座
2020-07-21 15:36:54
1108
7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人