Java基于JDK的动态代理(实例)

一、建立两个用来测试的接口
分别为:
UserManger.java
1 package laogao.com; 2 3 public interface UserManger { 4 public void adduser(); 5 public void deleteuser(); 6 public void updateuser(); 7 public void selectuser(); 8 9 }
StudentManger.java
package laogao.com; public interface StudentManger { public void addstudemt(); public void deletestudnt(); public void updatestudent(); public void Selectstudent(); }
二、建立以上的真实实现
UserMangerImpl.java
1 package laogao.com; 2 3 public class UserMangerImpl implements UserManger{ 4 public void adduser() { 5 System.out.println("增加一个user"); 6 } 7 public void deleteuser() { 8 System.out.println("删除一个user"); 9 } 10 11 public void updateuser() { 12 System.out.println("修改一个user"); 13 } 14 public void selectuser() { 15 System.out.println("查询一个学生"); 16 17 } 18 19 }
StudentMangerImpl.java
package laogao.com; public class StudentMangerImpl implements StudentManger { public void addstudemt() { System.err.println("增加一个学生"); } public void deletestudnt() { System.out.println("删除一个学生"); } public void updatestudent() { System.out.println("修改学生信息"); } public void Selectstudent() { System.out.println("查看学生信息"); } }
三、创建代理方法
ProxyCilent.java
1 package laogao.com; 2 3 import java.lang.reflect.InvocationHandler; 4 import java.lang.reflect.Method; 5 import java.lang.reflect.Proxy; 6 7 public class ProxyCilent implements InvocationHandler { 8 //声明一个真实实现 9 private Object proxyImpl; 10 //传入一个真实实现返回一个代理实现 11 public Object getproxy(Object proxyImpl) { 12 this.proxyImpl=proxyImpl; 13 return Proxy.newProxyInstance(proxyImpl.getClass().getClassLoader(), proxyImpl.getClass().getInterfaces(), this); 14 } 15 16 17 18 19 20 @Override 21 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 22 // TODO Auto-generated method stub 23 this.anquan(); 24 this.bgin(); 25 Object invoke = method.invoke(proxyImpl, args); 26 this.end(); 27 this.log(); 28 return invoke; 29 } 30 public void anquan() { 31 System.out.println("安全检测!"); 32 33 } 34 public void bgin() { 35 System.out.println("开启事务!"); 36 37 } 38 public void end() { 39 System.out.println("提交事务!"); 40 41 } 42 public void log() { 43 System.out.println("日志提交!"); 44 45 } 46 47 }
四、创建测试
Test.java
1 package laogao.com; 2 3 public class Test { 4 public static void main(String[] args) { 5 6 7 //创建代理对象 8 ProxyCilent cilent=new ProxyCilent(); 9 UserManger UserManger = (UserManger)cilent.getproxy(new UserMangerImpl()); 10 UserManger.adduser(); 11 12 StudentManger StudentMAnger = (StudentManger)cilent.getproxy(new StudentMangerImpl()); 13 StudentMAnger.deletestudnt(); 14 } 15 }
人生永远无法回头,就连这平淡不惊的一幕,终有一日也会碎落满地

浙公网安备 33010602011771号