public interface UserServices { void add(); void delete(); void set(); void get(); }
public class UserServiceImpl implements UserServices{ @Override public void add() { // TODO Auto-generated method stub System.out.println("添加一个用户"); } @Override public void delete() { // TODO Auto-generated method stub System.out.println("删除一个用户"); } @Override public void set() { // TODO Auto-generated method stub System.out.println("修改一个用户"); } @Override public void get() { // TODO Auto-generated method stub System.out.println("查询一个用户"); } }
package com.cntaiping.tpi.claimplat.serviceapi.Test1.demo02; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class TargetProxy implements InvocationHandler { //获取被代理对象 private Object target; public void setTarget(Object target) { this.target = target; } public Object getporxy() { Object proxy = Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this); return proxy; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { String name = method.getName(); System.out.println("前置增强"+name+"方法"); UserServices invoke = (UserServices)method.invoke(target, args); System.out.println("后置增强"); return invoke; } }
package com.cntaiping.tpi.claimplat.serviceapi.Test1.demo02; public class Proxy { public static void main(String[] args) { //获取被代理对象 UserServiceImpl userServiceImpl = new UserServiceImpl(); //间接获取被代理对象 TargetProxy targetProxy = new TargetProxy(); //注入代理對象 targetProxy.setTarget(userServiceImpl); //生成真正的動態代理對象 UserServices porxy = (UserServices)targetProxy.getporxy();//使用同一个接口 //调用动态代理 porxy.add(); porxy.delete(); porxy.set(); porxy.get(); } }
原文:https://www.cnblogs.com/demowei/p/14755093.html