当前位置:首页 > CN2资讯 > 正文内容

JavaSE-动态代理java 动态代理

2天前CN2资讯

学习动态代理原理是为以后理解框架而必须的
需要注意的点:

接口:java.lang.reflect.InvocationHandler

方法:java.lang.reflect.Proxy.newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)

重写方法:invoke

以下是有接口的情况,使用JDK代理(没有接口的情况使用CGLIB动态代理)

package com.du.proxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; // ①==================基于Java接口实现动态代理========================== class Proxyer implements InvocationHandler{ // 被代理对象 private Object o; // 确定被代理对象 public Proxyer(Object o) { this.o = o; } /** * 类加载器 * 得到被代理对象的接口 * 代理对象实体类 * @return */ // 确定代理对象的实例 public Object bind(){ return Proxy.newProxyInstance(o.getClass().getClassLoader(), o.getClass().getInterfaces(), this); } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("代理之前执行的辅助方法!"); Object result=method.invoke(o, args); System.out.println("代理之后执行的辅助方法!"); return result; } } // ②==================被代理的业务========================== interface Service{ void doService(); } // ③===================被代理对象========================= class Obj implements Service{ @Override public void doService() { System.out.println("主要执行的核心业务"); } } // ④===================测试执行========================= public class MainTest{ public static void main(String[] args) { Obj obj = new Obj(); Proxyer proxyer = new Proxyer(obj); Service b = (Service) proxyer.bind(); b.doService(); } } 代理之前执行的辅助方法! 主要执行的核心业务 代理之后执行的辅助方法!
    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/24899.html

    分享给朋友:

    “JavaSE-动态代理java 动态代理” 的相关文章

    如何通过AWS CDN提升网站性能与安全性?全面解析Amazon CloudFront

    什么是AWS CDN AWS CDN,也就是Amazon CloudFront,是一个全球性的内容分发网络服务。它通过遍布全球的节点网络,确保内容能够快速、安全地传递给用户。无论是静态网页、动态内容,还是流媒体,AWS CDN都能提供高效的分发服务。它的设计目标是通过减少延迟和提高数据传输速度,提升...

    RackNerd VPS服务测评:性价比高、稳定性强的主机商推荐

    在当今的网络世界中,选择合适的主机商显得尤为重要。我最近体验了RackNerd这家提供VPS服务的主机商,想和大家分享一些我的观点。RackNerd因其性价比高而广受好评,这让我在决定购买前进行了详细的测评。我会从多个角度来探讨RackNerd的各方面表现。 RackNerd不仅在价格上拥有明显优势...

    BT下载机的使用技巧与软件下载推荐

    在数字时代,文件共享变得越来越普遍,BT下载机作为一种基于BitTorrent协议的P2P(Peer-to-Peer)文件共享工具,扮演着重要的角色。我记得第一次接触BT下载机时,发现它的操作不仅简单,还能快速下载大型文件,这让我对它产生了浓厚的兴趣。BT下载机允许用户通过种子文件(.torrent...

    RackNerd黑五促销活动详解:超值套餐与刺激抽奖

    RackNerd黑五促销活动概述 RackNerd,成立于2017年,以其出色的虚拟主机、VPS主机和独立服务器服务,在国外主机商领域占有一席之地。随着公司不断壮大,RackNerd在全球20个国家设立了数据中心,涵盖美加、欧洲和亚洲,提供多样化的服务方案。我一直很欣赏他们采用的当下流行的KVM虚拟...

    VPS硬盘清理:提升服务器性能的全面指南

    当我的VPS(虚拟专用服务器)磁盘满了时,事情往往会变得非常棘手。这不仅会导致应用程序的运行速度变慢,甚至可能引发系统崩溃或数据丢失。这样的状况让我不得不思考,定期进行硬盘清理的重要性。其实,维护良好的磁盘使用状况,对于确保服务器的整体性能至关重要。 首先,当VPS磁盘满了,系统的反应速度会明显下降...

    莱卡云:高性价比云服务器解决方案,助力企业发展

    莱卡云概述 莱卡云,这个名字你或许已经听说过。成立于2019年,它在云计算服务领域迅速崭露头角,成为一些企业的首选合作伙伴。凭借持有的多个《中华人民共和国增值电信业务经营许可证》,莱卡云有效地展开了多种多样的服务,充分满足了市场需求。与三大公有云的合作让它在竞争激烈的市场中站稳了脚跟,提供的解决方案...