Spring核心学习-AOP(7) 织入和代理

前导:开始学习Spring核心思想,通过一个山寨精简版Spring代码结合学习。


AdvisedSupport - 保存AOP配置

TargetSource - 保存被代理的数据

AopProxy - 对代理对象做代理,在调用目标方法前先调用它.

JdkDynamicAopProxy - 使用JDK动态代理对接口做代理

ReflectiveMethodInvocation - 将反射的Method封装为Joinpoint

MethodInterceptor - 对方法调用连接点实现包围通知的 AOP 联盟标准接口

MethodInvocation - 代表当前被通知的方法调用,我们使用这个类来控制具体什么时候进行方法调用

Spring AOP原理及拦截器:这里可以看看Spring AOP的基本概念


  • 我们利用Java的InvocationHandler以及Spring拦截器MethodInterceptor和MethodInvocation 模拟了一个AOP过程,理解了Java的动态代理和上面链接的东西后,理解代码应该就不难了,具体看项目代码。

项目地址

时间: 2024-11-07 20:42:53

Spring核心学习-AOP(7) 织入和代理的相关文章

【开源】.Net Aop(静态织入)框架 BSF.Aop

BSF.Aop .Net 免费开源,静态Aop织入(直接修改IL中间语言)框架,类似PostSharp(收费): 实现前后Aop切面和INotifyPropertyChanged注入方式. 开源地址:https://git.oschina.net/chejiangyi/BSF.Aop 开源QQ群: .net 开源基础服务  238543768  欢迎交流 描述: 静态织入实现,性能几乎接近原生代码编写. 项目结构扩展自BSF基础架构,但dll方面并不依赖BSF.dll,可以独立开发使用. 项目代

Spring框架学习——AOP的开发

一.AOP开发中的相关术语. ——JoinPoint(连接点):指那些可以被拦截到的点.比如增删改查方法都可以增强,这些方法就可以被称为是连接点. ——PointCut:切入点,真正被拦截的点,指对哪些连接点进行拦截的定义.JoinPoint是指方法可以增强,而切入点就是实际哪个方法进行增强或修改,这样的方法被称为切入点. ——Advice(增强/通知):方法层面的增强.指拦截到了方法后需要做的事情,也就是增强的功能部分被称为通知.分为前置(方法主体之前).后置.环绕通知. ——Introduc

Spring核心框架 - AOP的原理及源码解析

一.AOP的体系结构 如下图所示:(引自AOP联盟) 层次3语言和开发环境:基础是指待增加对象或者目标对象:切面通常包括对于基础的增加应用:配置是指AOP体系中提供的配置环境或者编织配置,通过该配置AOP将基础和切面结合起来,从而完成切面对目标对象的编织实现. 层次2面向方面系统:配置模型,逻辑配置和AOP模型是为上策的语言和开发环境提供支持的,主要功能是将需要增强的目标对象.切面和配置使用AOP的API转换.抽象.封装成面向方面中的逻辑模型. 层次1底层编织实现模块:主要是将面向方面系统抽象封

Spring核心学习(4)从XML中读取BeanDefinition-将代码变成配置

前导:开始学习Spring核心思想,通过一个山寨精简版Spring代码结合学习. 内容:1. BeanDefinitionReader-配置读取者. 2. XmlBeanDefinitionReader-从XML中读取配置. 3. Resource-定位资源文件.这次将Bean的配置信息都放到了XML里,所以这里会有一个XML文件的读取,我们通过XmlBeanDefinitionReader将XML中的信息组装好成BeanDefinition放到一个Map里,这样我们就能真正做到像Spring那

Spring核心学习(5)将Bean注入Bean-解析依赖

前导:开始学习Spring核心思想,通过一个山寨精简版Spring代码结合学习. 内容:1. BeanReference-保存Bean的引用. 2. getBean()中调用createBean()-lazy-init.这次我们用到了在Bean中注入Bean的情况,在这里我们再一次改写了AbstractBeanFactory,改写后的AbstractBeanFactory将多出一个List来保存所有注册的对象名,而且我们不再是注册时候就创建bean,并将beanDefinition的bean注入

Spring核心学习(1)实现基本的容器-包括注入和获取功能

前导:开始学习Spring核心思想,通过一个山寨精简版Spriing代码结合学习. 内容:1. BeanDefinition-保存Bean及配置信息 2. BeanFactory-对Bean进行管理. BeanDefinition: public class BeanDefinition { private Object bean; public BeanDefinition(Object object) { this.bean = object; } public Object getBean

Spring核心学习(3)为Bean注入属性

前导:开始学习Spring核心思想,通过一个山寨精简版Spring代码结合学习. 内容:1.Propertyvalue-保存属性注入信息.2.AutowireCapableBeanFactory-可自动装配的BeanFactory. 这里我们重新定义了BeanDefinition,增加了属性列表这个字段,我们将为bean附加额外的属性,所以我们又定了PropertyValues.PropertyValue来辅助,当我们为bean定义的时候同时设置他的属性,通过反射机制来动态的附加到bean里,来

Spring核心学习(6)引用ApplicationContext-包装Bean的初始化过程,对应用透明

前导:开始学习Spring核心思想,通过一个山寨精简版Spring代码结合学习. 这是IOC的最终版本,在这里我们将BeanFactory包装了起来,让流程能真正的像Spring那样简单.我们新定义了一个接口去继承BeanFactory,然后通过组合的方式将AbstractBeanFactory添加进来,最后的ClassPathXmlApplicationContext类将真正的把Bean的建立,组装都完成. IOC的收获:框架开发思想:在代码实现中,配置和逻辑要有明确的分水岭:1. XML=>

Spring核心学习(2)管理Bean的生命周期

前导:开始学习Spring核心思想,通过一个山寨精简版Spriing代码结合学习. 内容:1. 抽象BeanFactory-面向接口更易拓展BeanFactory-面向接口更易拓展. 2. 在AbstractBeanFactory内部初始化Bean. 这里的BeanDefinition相比上一个更加丰富,多了BeanDefinition包含的Bean的Class的信息,这里我们不在注册前就把Bean实例化给BeanDefinition,而是延迟到注册的时候才实例化Bean给BeanDefinit