JDK动态代理(自我总结)

Posted on 2011-12-19 16:32 胥子 阅读(164) 评论(0)  编辑  收藏
实现步骤:
1.新建生成动态代理对象类,实现java.lang.reflect.InvocationHandler接口。
2.新建一个方法用与生成代理对象并返回对象。
3.实现接口方法invoke,这也是切面处理的核心操作地。
-------上层接口 
public interface Service {
    
void doService(String name);
}

 -----接口实现
public class ServiceImpl implements Service{

    @Override
    
public void doService(String name ) {
        System.out.println(
"hello " + name);
    }


}



 -------实现InvocationHandler接口的类
public class ServiceDynamicProxy implements InvocationHandler {
    
private Object targetObject ;
    
//把要代理的类传进去
    public Object createProxy(Object targetObject){
        
this.targetObject = targetObject ;
        
return  Proxy.newProxyInstance(targetObject.getClass().getClassLoader(),
                                targetObject.getClass().getInterfaces(), 
this);
    }

    
//invoke方法会自动调用,切面处理
    @Override
    
public Object invoke(Object proxy, Method method, Object[] args)
            
throws Throwable {
        checkSecurity();
        System.out.println(proxy.getClass().getName());
        Object result 
= null ;
        result 
= method.invoke(this.targetObject,args);
        
return result;
        
    }

    
public void checkSecurity(){
        System.o ut.println(
"check the security ");
    }


}
-------测试类


public class DynamicProxyClient {
    
public static void main(String[] args) {
        ServiceDynamicProxy dynamicProxy 
= new ServiceDynamicProxy();
        Service service 
= (Service)dynamicProxy.createProxy(new ServiceImpl());
        service.doService(
"xuyiyu");
    }

}



只有注册用户登录后才能发表评论。


网站导航:
 

posts - 2, comments - 0, trackbacks - 0, articles - 0

Copyright © 胥子