码迷,mamicode.com
首页 > 编程语言 > 详细

【j2ee spring】14、AOP中的概念

时间:2015-04-02 16:29:14      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:aop   切面   

AOP中的概念

1)切面(Aspect): 指交叉业务逻辑的统称, 比如日志,事务,安全;
2)通知(Advice): 指切面的具体实现;
3)连接点(Joinpoint):指切面可以织入到(应用到)目标对象的位置(级别), 两个: 方法/属性代理模式, 调用的是代理对象, 代理维护一个目标对象的属性; 调用方法之前, 先写日志; 再调用具体的实现方法; 调用属性之前, 拦截一下做处理,很少用;Spring目前不支持这个;
4)切入点(Pointcut):指通知(切面的具体实现)应用到哪些目标对象的哪些方法或者哪些属性上; org.springframework.aop.PointcutSpring根据类名称及方法名称定义Pointcut,表示Advice织入至应用程序的时机;
5)引入(introduction):指动态的给一个对象增加方法或者属性的过程;是一种特殊的通知;
6)织入(weaving):将切面(通知)应用到目标对象生成代理的过程;
7)代理对象(Proxy): 目标对象应用切面以后生成的代理(切面织入之后生成的新的代理对象);
8)目标对象(Target): 具体业务逻辑的实现(需要织入切面的对象);

http://zhidao.baidu.com/link?url=xdWJL948zjOJ1Yfm4EZn81RkLhI1WSjBKGlF40c_n7pa0V6PT8zK9dWk44Rp0KnfQvwospBiC8wLhR3x_60hXK

再说AOP,还是以上面的例子。
比如你想在每次写字之前都检查一下笔里有没有墨水了,通常的做法是:在写字这个Action里调用判断是否有墨水的方法。这样做的不好一个方面是,写字的action和是否有墨水的方法产生了依赖,如果你有十几支不同的笔写字,每一个笔的Action里都要调用判断是否有墨水的方法;另一个方面是:就面向对象的程序设计来说,写字和判断是否有墨水的方法是同一等级的,如果你让写字这个动作来判断是否有墨水不够人性化,有违面向对象的程序设计的思想。
如果用Spring的AOP,是把写字的Action作为一个切面,在每次调用不同的笔来写字的方法之前,调用判断是否有墨水的方法。它是由标签在Spring配置文件里定义的,形式如:




这里,对com.baidu.dao下所有以write开头的方法做了一个切面,做要做的操作是以下面的pointcut-ref=”allManagerMethod”来定义的。

execution(* j3t10.dao.UserDao.*(..))
上面第一个*号表示返回值类型任意。第二个星号表示UserDao类中任意方法。(..)表示方法参数任意。
execution(* com.baidu.dao.write*(..))
返回类型不限,在com.baidu.dao.write包下的所有方法,不限参数

http://zhidao.baidu.com/link?url=pohGuU1u5Pa4Ky9LyK5x4Z5Kb_DzFq-5IPzm9d6rRRtANJUow-Nag12nox0-rCsbabVTZivNeijOrGqzhJxkU_

【j2ee spring】14、AOP中的概念

标签:aop   切面   

原文地址:http://blog.csdn.net/cutter_point/article/details/44832925

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!