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();
}
}