CGLIB 动态代理
public class HouserHost {
public void rentHouse() {System.out.println("出租房屋了");
}
}
public class middle implements MethodInterceptor {
@Override
public Object intercept(Object object, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
System.out.println("出租房屋");
Object invokeSuper = methodProxy.invokeSuper(object, args);
System.out.println("装修房屋");
return invokeSuper;
}
}
public static void main(String[] args) {
middle m = new middle();
Enhancer e = new Enhancer();
e.setSuperclass(HouserHost.class);
e.setCallback(m);
HouserHost create = (HouserHost) e.create();
create.rentHouse();
}
JDBC动态代理
public interface Uservice {
void marry();
}
public class User implements Uservice {
@Override
public void marry() {
System.out.println("小明要结婚了");
}
}
public class Jckdynproxy implements InvocationHandler {
private Object realObj;
public Jckdynproxy(Object realObj) {
super();
this.realObj = realObj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("布置婚房");
Object invoke = method.invoke(realObj, args);
System.out.println("收取佣金");
return invoke;
}
}
public class Testjdk {
public static void main(String[] args) {
User user = new User();
Jckdynproxy jdkProxy = new Jckdynproxy(user);
Uservice proxyInstance = (Uservice) Proxy.newProxyInstance(user.getClass().getClassLoader(), user.getClass().getInterfaces(), jdkProxy);
proxyInstance.marry();
}
}