深入浅出Spring aop
-
动态代理之jdk动态代理
-新建user接口 和实现类
package com.proxy;
public interface User {
void show();
}
package com.proxy;
public class UserImpl implements User {
@Override
public void show() {
System.out.println("USER 实现 ");
}
}
- 新建代理类
package com.proxy;
import org.apache.commons.lang3.StringUtils;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.sql.SQLOutput;
//代理类
public class proxyInvocationHandler implements InvocationHandler {
//被代理目标的接口
private Object target;
public void setTarget(Object target) {
this.target = target;
}
public Object getProxy() {
return Proxy.newProxyInstance(this.getClass().getClassLoader(),
target.getClass().getInterfaces(), this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
begin();
Object invoke = method.invoke(target, args);
end();
return invoke;
}
private void begin(){
System.out.println("begin ...");
}
private void end(){
System.out.println("end ... ");
}
}
- 最后测试
package com.proxy;
public class Test {
public static void main(String[] args) {
User user = new UserImpl();
proxyInvocationHandler proxyInvocationHandler = new proxyInvocationHandler();
proxyInvocationHandler.setTarget(user);
User proxyUser = (User) proxyInvocationHandler.getProxy();
proxyUser.show();
}
}