02 jdk动态代理
作者:互联网
前面我们已经看过了静态代理,但显而易见静态代理要给每一个接口提供两个实现类,为没有什么方式可以简化代理的实现呢?jdk动态代理就是其中之一。
1、操作步骤
- 创建一个UserService.java接口
public interface StudentService {
void query();
}
- 创建一个UserServiceImpl.java实现类
public class StudentServiceImpl implements StudentService {
@Override
public void query() {
System.out.println("查询");
}
}
- 创建一个Handle
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class MyInvocationHandle implements InvocationHandler {
public Object target;
public Object getInstance(Object object) {
this.target = object;
return Proxy.newProxyInstance(this.target.getClass().getClassLoader(), this.target.getClass().getInterfaces(), this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("这是权限验证");
return method.invoke(this.target, args);
}
}
- 创建测试类
public class TestJdkProxy{
public static void main(String[] args)
{
StudentService studentService = new StudentServiceImpl();
StudentService studentService1 = (StudentService) new MyInvocationHandle().getInstance(studentService);
studentService1.query();
}
}
以上就是使用jdk完成动态代理。
标签:02,java,target,jdk,Object,代理,StudentService,public 来源: https://www.cnblogs.com/alichengxuyuan/p/12554676.html