首页 > 代码库 > Spring AOP 整理(1)

Spring AOP 整理(1)

   这篇文章受到了以下作者的帮助,非常感谢!

    http://www.cnblogs.com/yanbincn/archive/2012/06/01/2530377.html  ---》 在不修改原有代码情况下,在目标方法执行期间,插入需要的代码(增加的业务代码)的方法:静态代理模式、JDK1.5后动态代理、Cglib 子类继承覆盖增强三种,分析了三种方法优劣,代码层次上理解AOP有很大的帮助。 Tip:如果bean实现了接口,Sping调用动态代理;否则用Cglib的方式实现(Spring出于自身需要对Cglib进行了改造封装)。

 

 技术分享

 总结:连接点就像是数据库中的数据,切入点表达式就是SELECT语句,为我们选出需要的切入点。执行切面类中指定的通知方法。 

http://www.cnblogs.com/zhugenqiang/archive/2008/07/27/1252761.html : 实践具体需求中对AOP的理解。推荐! 

  总结:AOP擅长对日志、安全、持久化、事务等项目中分散,执行逻辑又相似的模块的处理。 

   附上 基于XML配置的 AOP代码 ,基于注解的我不好管理。

 1 <!--1、基于xml配置的aop功能开启前提:将切面类和目标对象交由ioc容器管理 -->
 2     
 3     <bean id="targetClass" class="com.fan.job.se.TargetClass"></bean>
 4     
 5     <bean id="myaspect2" class="com.fan.job.se.MyAspect2"></bean>
 6     <bean id="myaspect1" class="com.fan.job.se.MyAspect1"></bean>
 7     
 8     <!--2、配置aop的信息,需要使用aop标签,aop名称空间  --> 
 9     <aop:config>
10         <!-- 切入点表达式
11         execution([权限修饰符] [返回值类型] [简单类名/全类名] [方法名]       ([参数列表]))
12                      可省略        * 表全部   =======两者可混合写           ..表示全部 
13          公共的切入表达式配置  -->
14         <aop:pointcut expression="execution(* *(..))" id="so"/>
15         
16         <!-- 切面类 参数信息:
17         ref:切面类 
18         order :切面优先级 越小越优先
19         id : 其id
20          -->
21         <aop:aspect ref="myaspect2" order="100">
22             <!-- 还要一些其他参数  自己去学去 --> 
23             <aop:after method="wtf" pointcut-ref="so" />
24         </aop:aspect>
25         
26         <aop:aspect ref="myaspect1" order="200" >
27         
28         <!-- 切入点表达式(单独 写入) -->
29             <aop:before method="say" pointcut="execution(* *(..))" />
30         </aop:aspect>
31         
32     </aop:config>

 

Spring AOP 整理(1)