首先写一个接口:
package net.test.dynamicproxy;
public interface UserManager {
public void addUser(String username,String password);
public void deleteUser(String id);
}
然后写这个接口的实现类:
package net.test.dynamicproxy;
public class UserManagerImpl implements UserManager {
@Override
public void addUser(String username, String password) {
System.out.println("增加的用户名:"+username+" 密码:"+password);
}
@Override
public void deleteUser(String id) {
System.out.println("删除用户");
}
}
然后再写一个代理类,这个类实现了InvocationHandler接口:
package net.test.dynamicproxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class UserManagerHandler implements InvocationHandler {
private Object targetObject;//表示代理实例
/**
*返回一个代理实例
*/
public Object newProxy(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 {
checkRole();
Object returnValue = null;
try{
method.invoke(targetObject, args);//这个方法必须要写,否则就无法实现代理,表示调用代理类的方法
}catch(RuntimeException e){
System.out.println(e);
}
return null;
}
public void checkRole(){
System.out.println("--------------检查权限-------");
}
}
测试:
package net.test.dynamicproxy;
public class Client {
public static void main(String args[]){
UserManagerHandler handler = new UserManagerHandler();
UserManager manager = (UserManager)handler.newProxy(new UserManagerImpl());
manager.addUser("hahaha", "yyd");
manager.deleteUser("110");
}
}
运行结果:
--------------检查权限-------
增加的用户名:hahaha 密码:yyd
--------------检查权限-------
删除用户
分享到:
相关推荐
java动态代理实例 要想理解拦截器的知识 最好要先理解java动态代理这块
附件为java 动态代理实例,有全码,包括测试代码。 代码少,注释全。 对理解代理非常不错。
JAVA的动态代理的一个例子
aop java
实现java动态代理的两个实例,jdk动态代理和cglib
java 动态代理 简单实例 新手看看
一个简单的java动态代理的实例
几个Java反射和动态代理的小例子。可以学习如何通过Java的反射机制实例化对象、调用对象的方法、操作对象的私有成员变量、改变数组中的某项的值、改变数组大小等;可以学习Java的动态代理模式、学习Java工厂模式以及...
java动态代理类的实例
NULL 博文链接:https://changaiqing.iteye.com/blog/1487140
Word格式的Java中动态代理的介绍及实例,有详细注释。
java动态代理的机制分析,以及相应的拓展。有详细的代码和实例加以分析。
java动态代理原理剖析的demo,其中诠释了动态代理的原理,并有对应的实际应用。
JAVA设计模式之代理模式实例
java 代理(动态、静态)实例:该资源包括java的动态代理和静态代理实例,代理里并有详细的注释。
Java基于反射机制写的动态代理操作实例。
java static proxy dynamic proxy
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
java代理实例可供参考,本实例采用了代理编写模式
java动态代理的分析与实现。有详细的代码实例,适合学习。