AOP标注-实例详解.doc

AOP标注-实例详解.doc

ID:57645903

大小:46.00 KB

页数:5页

时间:2020-08-30

AOP标注-实例详解.doc_第1页
AOP标注-实例详解.doc_第2页
AOP标注-实例详解.doc_第3页
AOP标注-实例详解.doc_第4页
AOP标注-实例详解.doc_第5页
资源描述:

《AOP标注-实例详解.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、AOP简介AOP(AspectOrientProgramming),也就是面向切面编程,作为面向对象编程的补充。面向切面编程(AOP)和面向对象编程(OOP)互为补充,面向对象编程将程序分解成各个层次的对象,而面向切面编程将程序运行过程分解成各个切面,可以这样理解,面向对象编程从静态角度考虑程序结构,面向切面编程是从动态角度考虑运行过程。AOP专门用来处理具有横切性质的系统服务,如事务管理、安全检查、缓存、对象池管理等。基本概念切面(Aspect):业务流程运行的某个特定步骤,也就是应用运行过程中的关注点,关注点可以横切多个对象,所以常常也称为

2、横切关注点。连接点(Joinpoint):程序运行过程中明确的点,如方法的调用,或者异常的抛出。SpringAOP中,连接点总是方法的调用。增强处理(Advice):AOP框架在特定在特定的切入点执行的增强处理。出来有”around”、”before”、”after”等类型。切入点(Pointcut):可以插入增强处理的连接点。简而言之,当某个连接点满足指定要求时,该连接点将被添加增强处理,该连接点也就变成了切入点。引入:将方法或者字段添加到被处理的类中。Spring允许引入新的接口到任何被处理的对象。目标对象(Target):被AOP框架进行

3、增强处理的对象,也被称为增强的对象。如果AOP框架是通过运行时代理来实现的,那么这个对象是一个被代理的对象。AOP代理:AOP框架创建的对象,简单地说代理就是对目标对象的加强。Spring中的AOP代理可以是JDK动态代理,也可以是DBLIB代理。前者为实现接口的目标对象的代理,后者为不实现接口的目标对象的代理。织入(Weaving):将增强处理添加到目标对象中,并创建一个被增强的对象(AOP代理)的过程就是织入。织入有两种方式:编译时增强(AspectJ)和运行时增强(DGLIB)。AOP代理的方法AOP框架织入的增强处理AOP代理实际是由A

4、OP框架动态生成的一个对象,该对象包含了目标对象全部的方法。AOP的方法在特定的切入点添加增强处理,并回调了目标对象的方法。AOP框架织入的增强处理回调目标对象的方法代理对象的方法=增强处理+被代理对象的方法几种常用增强处理Before增强处理Before增强处理使用@Before来标注一个方法,需要指定一个value属性,该属性指定一个切入点表达式(既可以是一个已有的切入点,也可以直接定义切入点表达式),用于指定该增强处理将被织入哪些切入点。实例介绍://定义一个Before增强处理的切面@AspectpublicclassBeforeAdv

5、iceTest{//执行lee包下所有类的所有方法都将作为切入点@Before("execution(*kuozhan.before.*.*(..))")publicvoidauthority(){System.out.println("模拟执行权限检查");}}//lee类下定义一个Chiness类,该类使用@ComponentAnnotation进行标注@ComponentpublicclassChinessimplementsPerson{//实现Person接口的sayHello方法publicStringsayHello(String

6、name){returnname+"hello,SpringAOP!";}//实现Person接口的eat方法publicvoideat(Stringfood){System.out.println("我正在吃:"+food);}publicstaticvoidmain(String[]args){Chinessch=newChiness();System.out.println(ch.sayHello("luowz"));ch.eat("pie");}}使用Before增强处理只能在目标方法执行之前织入增强,使用Before增强处理无需理会目

7、标方法的执行,所以Before处理无法阻击目标方法的执行。AfterReturning增强处理After增强处理使用@AfterReturning来标注一个AfterReturning增强处理,目标方法完成后将被织入。需要指定的两个常用的属性:pointcut/value:两个属性作用是一样的,用于指定切入点对应的切入表达式。当指定pointcut属性值后,value属性值将被覆盖。returning:指定一个返回值形参名,增强处理定义的方法可通过该形参名来访问目标方法的返回值。@AspectpublicclassAfterReturningT

8、est{//执行lee包下所有类的所有方法都将作为切入点@AfterReturning(pointcut="execttion(*kuozhan.af

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。