首页 > 其他 > 详细

利用JDK的中Proxy动态代理实现Spring的AOP技术

时间:2014-02-22 16:18:41      阅读:294      评论:0      收藏:0      [点我收藏+]

首先给出设计模式静态代理与动态代理的学习:

http://layznet.iteye.com/blog/1182924   讲的不错

 

然后我们实现AOP 就要求我们对委托的所有方法的调用实现拦截

 

代理类生成的工厂

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package cn.gbx.aop;
 
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
 
import cn.gbx.service.impl.PersonService;
 
public class ProxyFactory implements InvocationHandler{
    private Object targetObject;
     
    public Object createProxyInstance(Object targetObject) {
        this.targetObject = targetObject;
        return Proxy.newProxyInstance(this.targetObject.getClass().getClassLoader(),
                this.targetObject.getClass().getInterfaces(),
                this);
    }
 
    @Override
    public Object invoke(Object proxy, Method method, Object[] args)
            throws Throwable {
        PersonService service = (PersonService) this.targetObject;
        Object result = null;
        if (service.getUser() != null) {
            result = method.invoke(this.targetObject, args);
        }
        return result;
    }
}

  

测试:

1
2
3
4
5
6
7
8
public class AOPTest {
    @Test
    public void aopTest(){
        ProxyFactory factory = new ProxyFactory();
        PersonService personService = (PersonService)factory.createProxyInstance(new PersonServiceImpl("xx"));
        personService.save();
    }
}

  

利用JDK的中Proxy动态代理实现Spring的AOP技术

原文:http://www.cnblogs.com/E-star/p/3560444.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!