当前位置: 首页 > news >正文

JDK动态代理(powernode CD2207 video)(内含教学视频+源代码)

JDK动态代理(powernode CD2207 video)(内含教学视频+源代码)

教学视频+原代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87545977

目录

  • JDK动态代理(powernode CD2207 video)(内含教学视频+源代码)
  • `教学视频+原代码下载链接地址:`[https://download.csdn.net/download/weixin_46411355/87545977](https://download.csdn.net/download/weixin_46411355/87545977)
    • 一、动态代理
      • 1.1JDK动态代理
        • 1.1.1 proxy
        • 1.1.2 InvocationHandler
        • 1.1.3 创建一个Maven项目
        • 1.1.4 导入Spring的相关依赖
        • 1.1.5 修改包名为com.bjpowernode.jdk.proxy
        • 1.1.6 目标类(被代理类)Fangdong
        • 1.1.7 接口
        • 1.1.8 测试类App
        • 1.1.9 测试结果
        • 1.1.10 封装自定义的InvocationHandler
        • 1.1.11 修改测试类App2

一、动态代理

1.1JDK动态代理

1.1.1 proxy

该类提供了方法创建代理类和代理类的对象的方法
创建一个代理类并返回代理类对象
static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)
loader : 类加载器,指定类加载器,是为了精确的定位类
interfaces : 接口Class类,使用JDK的反射,必须要有接口
h :InvocationHandler ,代理的处理器,每个代理类都有一个关联的处理器

1.1.2 InvocationHandler

是每个代理类对应的处理器
Object 方法调用的返回值,可以作为被代理的方法调用的返回值
proxy : 代理类对象
method : 目标类中被代理的方法
args : 目标类中被代理的方法的运行参数
Object invoke(Object proxy,Method method,Object[] args)

1.1.3 创建一个Maven项目

在这里插入图片描述
在这里插入图片描述

1.1.4 导入Spring的相关依赖

dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.18</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies>

1.1.5 修改包名为com.bjpowernode.jdk.proxy

1.1.6 目标类(被代理类)Fangdong

package com.bjpowernode.jdk.proxy;//房东 被代理类
public class Fangdong implements Lavel{public void sent(){System.out.println("出租1000");}
}

1.1.7 接口

package com.bjpowernode.jdk.proxy;//租售平台
public interface Lavel {void sent();
}

1.1.8 测试类App

App

package com.bjpowernode.jdk.proxy;import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;public class App {public static void main(String[] args) {//创建房东对象Fangdong fangdong = new Fangdong();//创建中介Lavel proxyInstance = (Lavel)Proxy.newProxyInstance(App.class.getClassLoader(), new Class[]{Lavel.class},new InvocationHandler() {//处理器// (在没有修改原来的方法的前提下,对原来的方法进行了增强)@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("");//invoke方法里面第一个参数,要额外收取佣金500传入的是目标对象(代理对象)return method.invoke(fangdong, args);}});proxyInstance.sent();}
}

1.1.9 测试结果

在这里插入图片描述

1.1.10 封装自定义的InvocationHandler

.`package com.bjpowernode.jdk.proxy;import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;public class MyInvocationHandler implements InvocationHandler {private Object obj;public MyInvocationHandler(Object obj){this.obj = obj;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("多收500");return method.invoke(obj,args);//对象.方法}
}
`

1.1.11 修改测试类App2

package com.bjpowernode.jdk.proxy;import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;public class App2 {public static void main(String[] args) {//创建房东对象Fangdong fangdong = new Fangdong();//创建中介Lavel proxyInstance = (Lavel)Proxy.newProxyInstance(App2.class.getClassLoader(),new Class[]{Lavel.class},new MyInvocationHandler(fangdong));proxyInstance.sent();}
}

相关文章:

JDK动态代理(powernode CD2207 video)(内含教学视频+源代码)

JDK动态代理&#xff08;powernode CD2207 video&#xff09;&#xff08;内含教学视频源代码&#xff09; 教学视频原代码下载链接地址&#xff1a;https://download.csdn.net/download/weixin_46411355/87545977 目录JDK动态代理&#xff08;powernode CD2207 video&#xf…...

【Linux】Sudo的隐晦bug引发的一次业务问题排查

Sudo的隐晦bug引发的一次业务问题排查写在前面问题描述问题排查高负载现象排查日志排查跟踪任务调度过程Sudo引发的问题手动复现问题分析处理方案写在前面 记录一次生产环境sudo启动进程频繁被Kill且不报错的异常处理过程&#xff0c;如果遇到同样的问题只想要解决方案&#x…...

Java VisualVM 安装 Visual GC 插件图文教程

文章目录1. 通过运行打开 Java VisualVM 监控工具2. 菜单栏初始视图说明3. 工具插件菜单说明4. 手工安装插件5. 重启监控工具查看 Visual GC1. 通过运行打开 Java VisualVM 监控工具 首先确保已安装 Java 环境&#xff0c;如此处安装版本 JDK 1.8.0_161 C:\Users\niaonao>j…...

【C语言】详解静态变量static

关键字static 在C语言中&#xff1a;static是用来修饰变量和函数的static主要作用为:1. 修饰局部变量-静态局部变量 2. 修饰全局变量-静态全局变量3. 修饰函数-静态函数在讲解静态变量之前&#xff0c;我们应该了解静态变量和其他变量的区别: 修饰局部变量 //代码1 #include &l…...

SpringBoot整合ElasticSearch实现模糊查询,排序,分页,高亮

目录 前言 1.框架集成-SpringData-整体介绍 1.1Spring Data Elasticsearch 介绍 2.框架集成Spring Data Elasticsearch 2.1版本说明 2.2.idea创建一个springboot项目 2.3.导入依懒 2.3.增加配置文件 2.4Spring Boot 主程序。 2.5.数据实体类 2.6.配置类 2.7.DAO 数据…...

YARN基本架构

主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成&#xff0c;如图所YA示。 ResourceManager&#xff08;RM&#xff09; RM是全局资源管理器&#xff0c;负责整个系统的资源管理和分配 主要由两个组件构成&#xff1a;Scheduler调度器和应用程序…...

【C++复习】类和对象全知识点总结

类和对象写在前面类和对象面向对象类类的定义类的访问限定符类的作用域类的实例化类对象大小this指针类的默认成员函数构造函数析构函数拷贝构造函数运算符重载赋值运算符重载前置后置重载取地址及const取地址操作符重载const 成员static 成员友元友元函数有元类内部类匿名对象…...

基于轻量级YOLOv5开发构建汉字检测识别分析系统

汉字检测、字母检测、手写数字检测、藏文检测、甲骨文检测在我之前的文章中都有做过了&#xff0c;今天主要是因为实际项目的需要&#xff0c;之前的汉字检测模型较为古老了还使用的yolov3时期的模型&#xff0c;检测精度和推理速度都有不小的滞后了&#xff0c;这里要基于yolo…...

leetcode-每日一题-66(简单题,数组)

这道题其实还没那么简单&#xff0c;中间还是有的绕的。。。。给定一个由 整数 组成的 非空 数组所表示的非负整数&#xff0c;在该数的基础上加一。最高位数字存放在数组的首位&#xff0c; 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外&#xff0c;这个整数不会…...

LeetCode295之数据流的中位数(相关话题:优先队列)

题目描述 中位数是有序整数列表中的中间值。如果列表的大小是偶数&#xff0c;则没有中间值&#xff0c;中位数是两个中间值的平均值。 例如 arr [2,3,4] 的中位数是 3 。例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。 实现 MedianFinder 类: MedianFinder() 初始化 Media…...

助你加速开发效率!告别IDEA卡顿困扰的性能优化技巧

在现代软件开发中&#xff0c;IDE&#xff08;集成开发环境&#xff09;是一个必不可少的工具。IntelliJ IDEA是一个广受欢迎的IDE&#xff0c;但有时候IDE的性能可能会受到影响&#xff0c;导致开发人员的工作效率降低。本文将介绍一些可以提高IDE性能的技巧&#xff0c;帮助开…...

Java设计模式-适配器模式

1、简介 适配器模式是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式&#xff0c;它结合了两个独立接口的功能。 这种模式涉及到一个单一的类&#xff0c;该类负责加入独立的或不兼容的接口功能。 2、适配器模式分类 目标接口&#xff08;Target&#x…...

Linux 练习六 (IPC 管道)

文章目录1 标准管道流2 无名管道&#xff08;PIPE&#xff09;3 命名管道&#xff08;FIFO&#xff09;3.1 创建删除管道文件3.2 打开和关闭FIFO文件3.3 管道案例&#xff1a;基于管道的客服端服务器程序使用环境&#xff1a;Ubuntu18.04 使用工具&#xff1a;VMWare workstati…...

合并两个有序链表(精美图示详解哦)

全文目录引言合并两个有序链表题目描述方法一&#xff1a;将第二个链表合并到第一个思路实现方法二&#xff1a;尾插到哨兵位的头节点思路实现总结引言 在前面两篇文章中&#xff0c;我们介绍了几道链表的习题&#xff1a;反转链表、链表的中间结点、链表的倒数第k个结点&…...

33 JSON操作

目录 一、介绍 二、JSON的特点 三、JSON语法 1、json中的数据类型 四、JSON文件的定义 五、读取JSON文件 1、读取json文件的两种方式 &#xff08;1&#xff09;read、write &#xff08;2&#xff09;json.load 2、使用json.load读取json文件的步骤 3、练习读取json文件 六、练…...

三八妇女节快乐----IT女神活动随笔

献丑了&#xff0c;一首小小散文诗&#xff0c;请大家轻喷 O(≧口≦)O 我的答案 天下芸芸众生&#xff0c;好似夜幕漫天繁星。 与你相识&#xff0c;只是偶然。 简单的一个招呼&#xff0c;于是开始了一段故事。 我们或是诉说&#xff0c;或是分享&#xff1b; 我们彼此倾听&…...

【PSO-PID】使用粒子群算法整定PID参数控制起动机入口压力值

最近在学优化算法&#xff0c;接触到了经典寻优算法之粒子群PSO&#xff0c;然后就想使用PSO算法来调节PID参数&#xff0c;在试验成功之后将此控制算法应用到了空气起动系统上&#xff0c;同时与之前的控制器进行对比看看哪种控制效果最好。 0 引言 PID参数整定主要有两种&…...

当代数据分析指南:激发商业洞见的七个方法(上)

如果说眼下的发生的事能证明什么&#xff0c;那就是基于实时可信的数据分析正在变得越来越重要。但是要是想要在需要的时候准确地获取中肯的洞察&#xff0c;我们所需要的可不只是漂亮的可视化。 如何让你的员工都有能力和机会都做出最好的决策&#xff0c;不管这个决策会有多…...

javaWeb核心02-JSP、EL、JSTL、MVC

文章目录JSP1&#xff0c;JSP 概述2&#xff0c;JSP 快速入门2.1 搭建环境2.2 导入 JSP 依赖2.3 创建 jsp 页面2.4 编写代码2.5 测试3&#xff0c;JSP 原理4&#xff0c;JSP 脚本4.1 JSP 脚本分类4.2 案例4.2.1 需求4.2.2 实现4.2.3 成品代码4.2.4 测试4.3 JSP 缺点5&#xff0…...

spring-boot+mybatis-plus连接Oracle数据库,及查询相关数据

配置java 略&#xff08;这里我用的是jdk1.8&#xff09; 配置maven 环境变量&#xff1a; M2_HOME&#xff1a;D:\LJ\software\java\maven\apache-maven-3.6.3 Path&#xff1a;%M2_HOME%\bin 仓库/jdk/镜像云设置(./config/sitting) 仓库 <localRepository> D:/…...

FanControl终极指南:5步解决Windows风扇噪音与过热难题

FanControl终极指南&#xff1a;5步解决Windows风扇噪音与过热难题 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/f…...

在OpenClaw项目中配置Taotoken作为Agent的模型供应商

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在OpenClaw项目中配置Taotoken作为Agent的模型供应商 基础教程类&#xff0c;指导在虚拟机环境使用OpenClaw框架开发AI Agent的用户…...

DDR内存接口测试:从信号完整性到电源噪声的工程实践指南

1. DDR内存测试的核心挑战与价值在任何一个涉及高速数字信号的设计项目中&#xff0c;内存接口的验证都是决定系统稳定性的关键一环。从早期的SDRAM到如今主流的DDR4、DDR5乃至LPDDR系列&#xff0c;双倍数据速率&#xff08;DDR&#xff09;技术通过在每个时钟周期的上升沿和下…...

ncmdumpGUI:解锁网易云音乐NCM文件格式的终极解决方案

ncmdumpGUI&#xff1a;解锁网易云音乐NCM文件格式的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐下载的NCM格式文件无法在其…...

艾尔登法环:黑夜君临2026.5.12最新破解版免费下载 一键转存 永久更新 (看到速转存 资源随时走丢)

下载链接 这是一篇关于《艾尔登法环&#xff1a;黑夜君临》&#xff08;Elden Ring: Nightreign&#xff09;的深度解析文章。 破碎边缘的守望&#xff1a;解析《艾尔登法环&#xff1a;黑夜君临》的架构与演变 在动作角色扮演游戏的版图上&#xff0c;《艾尔登法环》无疑是一…...

OpencvSharp 算子学习教案之 - Cv2.Sobel

OpencvSharp 算子学习教案之 - Cv2.Sobel 大家好&#xff0c;Opencv在很多工程项目中都会用到&#xff0c;而OpencvSharp则是以C#开发与实现的Opencv操作库&#xff0c;对.NET开发人员友好&#xff0c;但很多API的中文资料、应用场景及常见坑点等缺乏系统性归纳&#xff0c;因此…...

PonyAgent 试用笔记:当 LangGraph 太重、Dify 太黑盒,中小企业的第三条路,一个很实用的智能体框架

PonyAgent 试用笔记&#xff1a;当 LangGraph 太重、Dify 太黑盒&#xff0c;中小企业的第三条路 TL;DR&#xff1a;PonyAgent 是一个用 Python 写的极简智能体框架&#xff0c;单文件入口、.env 一处配置、Redis 挂了能自动降级到内存模式。我用 5 分钟在 Windows 上把它跑了起…...

LaTeX引用中文文献总出乱码?可能是你BibTeX引擎和编码没选对(XeLaTeX+BibTeX实战)

LaTeX中文文献引用乱码全解析&#xff1a;从编码原理到XeLaTeX实战方案 当你熬夜赶论文时&#xff0c;参考文献列表突然变成一堆乱码方块&#xff0c;引用标记全部显示为"??"——这种崩溃瞬间&#xff0c;每个用LaTeX写过中文论文的人都经历过。传统解决方案往往停…...

5分钟快速部署WebRTC Camera到Home Assistant:终极低延迟监控方案

5分钟快速部署WebRTC Camera到Home Assistant&#xff1a;终极低延迟监控方案 【免费下载链接】WebRTC Home Assistant custom component for real-time viewing of almost any camera stream using WebRTC and other technologies. 项目地址: https://gitcode.com/gh_mirror…...

Python自动化反向链接侦察工具:从爬虫原理到SEO实战应用

1. 项目概述&#xff1a;一个反向链接自动化侦察兵如果你做过网站运营、SEO或者内容营销&#xff0c;那你一定对“反向链接”这个词不陌生。简单来说&#xff0c;当网站A上有一个链接指向了你的网站B&#xff0c;这个链接就是你的一个反向链接。在搜索引擎的“世界观”里&#…...