AOP的总结

AOPAspect Oriented Programming),即面向切面编程,可以说是OOPObject Oriented Programming,面向对象编程)的补充和完善。它利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块。

 

 

AOP的作用是把那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。将重复的代码抽取出来(不同的模块),在需要时统一调用,可以不同的模块按不同的顺序调用,解耦。

 

 

 

 

AOP适合于那些具有横切逻辑的应用:如性能监测,访问控制,事务管理、缓存、对象池管理以及日志记录

AOP术语

pointcut:切入点

advice:通知,是要执行的逻辑,要实现对应的接口并重写其中的方法。分为

beforeadvice

afteradvice,不管切入点流程正常还是异常结束都执行

 

after returning advice,切入点流程正常结束执行

after throwing advice,切入点流程异常结束执行

 

arround advice

 

advisor(通知器):把advicepointcut结合起来,可以定义应该使用哪个advice并在哪个pointcut使用。

 

 

AOPjava上的实现原理?

jdk动态代理,目标类实现了接口

横切前置增强和后置增强在InvocationHandler的实现类中,但是不能把增强直接显式的写入Handler中,不具有可变性。而是把前置增强接口,后置增强接口,被代理对象封装在ProxyFactory中,也叫织入器,把生成ClassLoaderInterfaceInvocationHandler的代码以及Proxy.newProxyInstance的代码都放入织入器中。这样就能在外部创建不同的增强实现类,然后根据不同被代理对象生成不同的ProxyFactory,进而实现既能产生代理效果,也能在代理效果实现前后动态地插入不同的执行逻辑。

CGlib动态字节码增强,目标类没有实现接口

创建Enhencer作为子类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值