标签:需求 使用 line 实践 方式 pre 其他 code 基于
这篇文章受到了以下作者的帮助,非常感谢!
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>
标签:需求 使用 line 实践 方式 pre 其他 code 基于
原文地址:http://www.cnblogs.com/ForFan/p/6184247.html