Java-Spring AOP
xpmwgcwm
这个作者很懒,什么都没留下…
展开
-
使用JDK动态代理实现拦截器
Dog类 [code="java"] public interface Dog { public void info(); public void run(); } [/code] 实现Dog类 [code="java"] public class DogImpl implements Dog { pu...原创 2009-11-09 13:34:59 · 82 阅读 · 0 评论 -
AOP原理
从Spring的AOP框架介绍中得知 1. 对于使用接口的类,Spring使用JDK动态代理(原来做项目中试图从Bean强制转换为实现类,结果报错,原来是这么回事)。 import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; 2. 没有接口的就使用别的AOP框架asp...2009-11-09 13:42:19 · 99 阅读 · 0 评论 -
DefaultAdvisorAutoProxyCreator
DefaultAdvisorAutoProxyCreator这个类功能更为强大,这个类的奇妙之处是他实现了BeanProcessor接口,当ApplicationContext读如所有的Bean配置信息后,这个类将扫描上下文,寻找所有的Advistor(一个Advisor是一个切入点和一个通知的组成),将这些Advisor应用到所有符合切入点的Bean中 [color=red]需要注意的是,...2009-11-30 14:49:27 · 444 阅读 · 0 评论 -
AOP 学习, ProxyFactory 学习一
Advice: 拦截的切面 ProxyFactory: 简单使用 使用ProxyFactory, 需要指定其两个属性 setTarget: 拦截目标 addAdvice: 切面, 也就是拦截目标时你要执行的动作 [code="java"] public class MessageWriter { public void showMe...原创 2010-11-26 10:34:17 · 81 阅读 · 0 评论 -
AOP 学习, ProxyFactory 学习二
ProxyFactory: 拦截具有接口的类 [code="java"] public interface ITask { public void execute(); } public class TaskImpl implements ITask { @Override public void execute() { System.o...原创 2010-11-26 10:37:17 · 93 阅读 · 0 评论 -
AOP 学习, ProxyFactory 学习三
ProxyFactory: 拦截没有接口的类 [code="java"] public class TaskImpl { public void execute() { System.out.println("run code to here"); } } [/code] //如果没有接口, 只能用CGLIB, 无论是否声明 pf.setPro...原创 2010-11-26 10:39:19 · 85 阅读 · 0 评论 -
AOP 学习, 前置通知和后置通知
1. 前置通知 a. 可以修改传给目标方法的参数 b. 可以抛出异常,阻止方法的执行 c. 安全性检查 [code="java"] org.springframework.aop.MethodBeforeAdvice public class MyBeforeAdvice implements MethodBeforeAdvice{ ...原创 2010-11-26 16:04:43 · 86 阅读 · 0 评论 -
AOP 学习, 包围通知
1. 包围通知 性能测试 org.aopalliance.intercept.MethodInterceptor 综合了前置通知和后置通知, 除了一个重要区别, 我们可以修改方法的返回值, 还可以阻止目标方法的执行,可以将目标方法的实现换成新的代码 [code="java"] public class MessageWriter { public void...原创 2010-11-26 16:07:31 · 62 阅读 · 0 评论 -
AOP 学习, 抛出通知
抛出通知 org.springframework.aop.ThrowsAdvice; 抛出通知跟后置通知一样是在连接点只后运行的,不过抛出通知只在方法抛出一个异常时才执行,该通知对程序运行不能做任何改变, 能做的只是改变抛出异常的类型 [code="java"] public class ErrorClass { public void error1()...原创 2010-11-26 16:11:20 · 102 阅读 · 0 评论