AOP记录

AOP:切面,,,涉及多个类的公共行为封装到一个可以重复使用的模块,
利用横切技术,将软件系统分为:核心关注点、横切关注点。业务处理的主要流程是核心,
和它关系不大的叫做横切关注点。例如:(统一的异常处理、日志记录、统一的数据格式等等)!!

AOP最大的功能就是能解决横切点的统一管理。

在不改变原有代码的逻辑上,设计代理设计模式:
静态代理 、动态代理
被代理类:原始类不做任何操作,但创建和使用时,设计一个原始类的代理类》
代理类:根据被代理类,构建代理类

静态代理:
继承:
写一个代理类,B继承于原始类A,B中写想要的横切点(打印日志)然后调用A的方法(super.方法)。使用时:A a = new B();使用新的代理类。

接口:类的上一层,接口直去写代理类,和被代理类实现同一个接口。

静态代理的缺陷:同一类功能的统一处理,例如:支付,但要是收款的话,又要重新写收款的代理类。同样有代码重复。

动态代理: .class文件运行期间,动态的织入代理类的字节码!!!
方式: JDK CGLIB(java中的动态代理框架)

jdk实现: 被代理类必须实现接口,

CGLIB实现: 继承方法实现,

SpringAOP:
动态代理是,实现了接口的,采用jdk,没有接口的,采用CGLIB

AOP的术语:通知(advice)、切点(pointcut)、连接点(joinpoint)
切面 Aspect(通知和切点组成)

通知:描述切面是什么,什么时候使用、完成的工作,什么情况下使用,

前置通知@before : 目标方法执行前先执行通知方法
后置通知@after : 目标方法执行后返回或抛错时调用
返回后使用@afterReturning 抛异常后使用:@AfterThrowing 环绕通知:@around

织入:切面和连接点的连接过程。
时期:编译期(例如:AspectJ)、类加载(例如:classloader)、运行期(SpringAop)

一个程序执行的过程中会有方法的调用、异常的抛出等操作,而这些操作就可以作为一个连接点去进行切面的插入,从而使得程序有了除原始功能外的新的功能或者行为。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值