【j2ee spring】14、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): 具体业务逻辑的实现(需要织入切面的对象);

?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包下的所有方法,不限参数

?url=pohGuU1u5Pa4Ky9LyK5x4Z5Kb_DzFq-5IPzm9d6rRRtANJUow-Nag12nox0-rCsbabVTZivNeijOrGqzhJxkU_

可是,我却迈不开步伐,怎么也走不出那个圈……

【j2ee spring】14、AOP中的概念

相关文章:

你感兴趣的文章:

标签云: