02 jdk动态代理
发布日期:2022-03-30 20:19:33 浏览次数:23 分类:博客文章

本文共 1229 字,大约阅读时间需要 4 分钟。

前面我们已经看过了静态代理,但显而易见静态代理要给每一个接口提供两个实现类,为没有什么方式可以简化代理的实现呢?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完成动态代理。

转载地址:https://www.cnblogs.com/alichengxuyuan/p/12554676.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:07 注解方式完成事务
下一篇:03 cglib动态代理

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月14日 09时31分08秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章