cglib动态代理模式

代理模式(静态代理、JDK 动态代理、CGLIB 动态代理) 房屋中介代理:客户手里没有房源信息,找一个中介商品代购:这些代购者可以去哪到比较低成本的商品,拥有自己的渠道代理模式(Proxy Pattern):是 23 中设计模式中的一种,属于结构型的模式。指一个对象本身不做实际的操作,而是通过其他对象来得到自己想要得到的结果。**意义:**目标对象只需要关心自己的实现细节,通过代理对象来实现功能的增强,可以扩展目标对象的功能。体现了非常重要的编程思想:不能随便修改源码,通过修改代理的方式来实现功能的扩展。 阅读详情
 
--->cglib代理模式------------》添加cglib-nodep-2.1_3.jar

package com.dao;
import net.sf.cglib.proxy.Enhancer;
public class MYClass {
 public int method(){
  System.out.println(  "我的方法。。。" );
  return 1;
 }
 
 public static void main(String[] args) {
  
  Enhancer enhancer = new Enhancer();
  enhancer.setSuperclass(MYClass.class);
  enhancer.setCallback(new MethodInterceptorImpl());
  
  MYClass  my = (MYClass) enhancer.create();
  
  System.out.println(my.method());
 }
}
package com.dao;
import java.lang.reflect.Method;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
public class MethodInterceptorImpl  implements MethodInterceptor {
 @Override
 public Object intercept(Object obj, Method method, Object[] args,
   MethodProxy proxy) throws Throwable {
  
    System.out.println("开始日志。。");
    Object objs=  proxy.invokeSuper(obj, args);
    
     System.out.println("结束日志。。");
    
     return objs;
  
 }
}
--》使用CallbackFilter
package com.dao;
import java.lang.reflect.Method;
import net.sf.cglib.proxy.CallbackFilter;
public class CallbackFilterImpl implements CallbackFilter {
 @Override
 public int accept(Method method) {
  if( method.getName().equalsIgnoreCase("method2") ){
   return 1;
  }
  return 0;
 } 
}
package com.dao;
import java.lang.reflect.Method;
import net.sf.cglib.proxy.CallbackFilter;
public class CallbackFilterImpl implements CallbackFilter {
 @Override
 public int accept(Method method) {
  if( method.getName().equalsIgnoreCase("method2") ){
   return 1;
  }
  return 0;
 }
}

package com.dao;
import net.sf.cglib.proxy.Callback;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.NoOp;
public class MYClass {
 public int method(){
  System.out.println(  "我的方法1。。。" );
  return 1;
 }
 
 public int method2(){
  System.out.println(  "我的方法2。。。" );
  return 2;
 }
 public int method3(){
  System.out.println(  "我的方法3。。。" );
  return 3;
 }
 
 public static void main(String[] args) {
  
   Callback[] callbacks =new Callback[] { new MethodInterceptorImpl(),  NoOp.INSTANCE };
  
  Enhancer enhancer = new Enhancer();
  
  enhancer.setSuperclass(MYClass.class);
  
  enhancer.setCallbacks(callbacks);
  
  enhancer.setCallbackFilter(new CallbackFilterImpl());
  
  MYClass  my = (MYClass) enhancer.create();
  
  System.out.println(my.method());
  System.out.println(my.method2());
  System.out.println(my.method3());
  
 }
}
---》使用
public interface MYA {
  public void methodA();
}
package com.dao.impl;
import com.dao.MYA;
public class MYAI implements MYA{
 public MYAI(){
  System.out.println("asfsafads");
 }
 @Override
 public void methodA() {
   System.out.println( "a借口的方法。。。。" );
 }
}
--测试。。
public static void main(String[] args) {
  Class []interces = new Class[]{MYA.class  };
  Object[] delete = new Object[]{ new MYAI() };
  Object obj = Mixin.create(interces, delete);
  MYA mya =   (MYA)obj;
  mya.methodA(); 
  MYA mya3 =   (MYA)obj;
  mya3.methodA();
   
}
---》对象之间补充说明   属性名称类型一致
 BeanCopier copier = BeanCopier.create(Myth.class, Other.class, false);           
copier.copy(myth, other, null); 
 
特性阻抗 – SI/PI 世界碰撞的地方 除了谐振零点和峰值外,在一定频率下,传输线的阻抗看起来像远端开路时的电容器的阻抗,也看起来像远端短路时电感的阻抗。如果随后的制造变化将测得的阻抗推到 -10% 容差的低端(例如 44 欧姆)的测量区域内,那么如果在初始下降时测量,则真正的特性阻抗将在 42 欧姆时降低 5%,并且超出规格。这意味着,当我们测量红色或蓝色图的峰和相邻谷之间的中间阻抗时,它是该频率下传输线的特性阻抗。图 7 远端开路时(红色常亮)与远端短路时(蓝色常亮)的电感和电容抗阻抗与频率的关系(上图)和传输线的阻抗与频率(下图)的对比。 阅读详情

相关推荐

路径规划:D*Lite寻路算法详解

D*Lite详解目录

mkr67n的博客 2万+

cglib实战代理

看小伙如何使用动态代理,以一抵十

帝都的雁的博客 571

大疆OcuSync系统背后的黑科技:跳频扩频技术如何让你的无人机飞得更稳

本文深入解析了大疆OcuSync系统如何运用跳频扩频技术等先进无线通信方案,显著提升无人机在复杂环境下的飞行稳定性。系统通过跳频扩频与直接序列扩频技术协同工作,结合双频智能切换与多天线MIMO,有效对抗信号干扰与多径效应,确保控制指令与高清图传的可靠、低延迟传输,为用户带来更安心、更流畅的飞行体验。

ol7890123的博客 627

设计模式之代理模式(二)

CGlib动态代理: CGlib是一个第三方开源组件,作用是用来生成动态代理对象,与JDK动态代理不同的是,不需要创建接口,生成的代理对象是真实对象的子类,所以真实对象不能用final修饰。 目前,主流的框架都使用了CGlib,例如mybatis,spring,hibernate。 如何使用CGlib创建代理对象? 实现MethodInterceptor(import net.sf.cglib....

weixin_43480309的博客 225

Python介绍与安装

Python介绍与安装

acegi13579的专栏 3218

大数据应用技术实验报告一 Hadoop三种模式安装配置

JDK+Hadoop安装配置、单机模式配置 以下操作在SecureCRT里面完成 1.关闭防火墙 firewall-cmd --state 显示防火墙状态running/not running systemctl stop firewalld 临时关闭防火墙,每次开机重新开启防火墙 systemctl disable firewalld 禁止防火墙服务。 2.传输JDK和HADOOP压缩包 Sec...

Ruthless_Childe的博客 3089

CGLIB动态代理

被代理对象(目标对象)MyService: package com.example.service; public class MyService { public String doFirst() { System.out.println("doFirst"); return "firstResult"; } public String doLast() { System.out.println("doLas

769

泛微E9表单建模查询列表勾选后带入流程明细表中

注意:参照下图各项配置,否则会有问题。

泛微二次开发后端知识总结 5307

CGLIB动态代理机制,各个方面都有写到

CGLIB库介绍 代理提供了一个可扩展的机制来控制被代理对象的访问,其实说白了就是在对象访问的时候加了一层封装。JDK从1.3版本起就提供了一个动态代理,它使用起来非常简单,但是有个明显的缺点:需要目标对象实现一个或多个接口。假如你想代理没有接口的类呢?可以使用CGLIB库。 CGLIB是一个强大的、高性能的代码生成库。它被广泛使用在基于代理的AOP框架(例如Spring AOP和dynaop)提供方法拦截。Hibernate作为最流行的ORM工具也同样使用CGLIB库来代理单端关联(集合懒加载除外,它使

weixin_46577306的博客 944

超10万,两台Mac Studio在家就能跑满血DeepSeek,网友:这是性价比最高的大模型一体机

在AI计算领域,没有比这更强的个人电脑了。这要从它的架构说起。对于那些有本地部署满血版DeepSeek需求的用户,目前建议的配置是选购512GB统一内存 + 1TB SSD,搭载M3 Ultra芯片的Mac Studio,官网售价74249元,可以叠加国补、教育优惠、12期分期等,这可能是目前门槛最低、性价比最高的满血版DeepSeek本地部署方案。对于企业而言,尽管Mac Studio确实可以部署6000亿参数的大模型,但在内存带宽、模型精调服务等方面,跟专用的大模型一体机仍有差距,采购需要谨慎评估。

2501_90444774的博客 1914

【YOLOv11改进 - 特征融合】DySample :超轻量级且高效的动态上采样器

【YOLOv11改进 - 特征融合】DySample :超轻量级且高效的动态上采样器

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 1070

spring系列之动态代理

动态代理: 基于接口的动态代理 基于子类的动态代理 package com.ithm.config; import com.ithm.service.IProxyProduceService; import com.ithm.service.ProxyProduceServiceImpl; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.p...

喜羊羊love红太狼 346

YOLOv11改进策略【注意力机制篇】| 2024 蒙特卡罗注意力(MCAttn)模块,提高小目标的关注度

本文记录的是基于蒙特卡罗注意力(MCAttn)模块的YOLOv11目标检测改进方法研究。利用提高的跨尺度特征提取能力,使模型能够更好地传递和融合提取的多尺度特征,提高对小目标的关注度。Exploiting Scale-Variant Attention for Segmenting Small Medical Objects使用一种基于随机采样的池化操作来生成尺度无关的注意力图。它从三个不同尺度(3×33×33×3、2×22×22×2和1×11×11×1,即池化张量)中随机选择一个1×11×11×1注意力图

Limiiiing的博客 3599

代理模式及Java两种动态代理JDK动态代理和CGLIB动态代理

代理模式 什么是代理模式 代理模式是设计模式的一种,他是指一个对象A通过持有另一个对象B,可以具有B同样的行为的模式。他在对象B的基础上提供了一层访问控制,当你需要访问对象B时,你需要经过对象B的代理对象A来实现访问。因此代理模式也被称为委托模式,他能够提供非常好的访问控制。 对象A并不提供真正的执行逻辑,而是通过组合B去调用B的目标方法来实现目标逻辑。而A的作用则是在调用B方法的前后提供一些准备和善后的工作。即A虽然是“伪军”,但它可以增强B,在调用B的方法前后都做些其他的事情。Spring AOP就是使

XHY的博客 1749

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

代理模式之静态代理,JDK动态代理和cglib动态代理

代理模式,顾名思义,就是通过代理去完成某些功能。比如,你需要购买火车票,不想跑那么远到火车站售票窗口买,可以去附近的火车票代售点买,或者到携程等第三方网站买。这个时候,我们就把火车站叫做目标对象或者委托对象,也可以叫被代理对象,而火车票代售点和携程就叫做代理对象。 一、静态代理 静态代理是最简单的代理模式。需要定义一个接口,然后委托类和代理类分别实现这个接口 //待实现的接口 public int...

烟雨星空的博客 1358

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

CGLIB动态代理模式详解

此文章介绍的是动态代理模式中的CGLIB代理模式,此模式与jdk动态代理模式的区别是: 目标代理类不需要实现接口,同样也可以实现代理。 直接看一个简单的cglib应用,看他是如何实现代理的。 第一步,新建一个maven项目,并引入cglib依赖: <dependency> <groupId>cglib</gro...

Dream_it_possible!的博客 2607

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JDK和CGLIB动态代理模式

JDK和CGLib动态代理模式 目录 JDK和CGLib动态代理模式 一、JDK动态代理 1.JDK动态代理基本原理 2.JDK执行过程及代码分析 二、CGLib动态代理 1.CGLib动态代理基本原理 2.CGLib过程简...

wzx15927662183的博客 327

代理模式-动态代理(基于继承,cglib动态代理)

静态代理 动态代理 1:CGLib的基本介绍 2:目标类 3:方法拦截器 4:测试类 静态代理 这里我们介绍了静态代理,也知道了静态代理的一些缺点代理模式-静态代理 下面我们就介绍动态代理(基于继承,cglib动态代理) 动态代理 1:CGLib的基本介绍 看一下CGLib的基本结构,下图所示,代理类去继承目标类,每次调用代理类的方法都会被方法拦截器拦截,在拦截器中才是调用目标类的该方法的逻辑,结构还是一目了然的; 使用一下CGLib,...

林高禄 1553

java中的静态、动态代理模式以及Spring中的CgLib动态代理解读(面试必问)

java中的静态、动态代理模式以及Spring中的CgLib动态代里解读(面试必问)     基础知: 反射知识 什么是反射 反射是框架的灵魂 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象. 在j

易柏州的博客 1万+

代理模式(静态代理、jdk动态代理、CGLib动态代理)

本文主要通过案例和流程图讲解三种代理模式,并分析他们各自的特点与相互之间的联系。

m0_54355172的博客 1743

代理模式-静态代理,jdk动态代理,CGLIB动态代理

目录java中的代理模式静态代理动态代理基于jdk(接口)的动态代理基于CGLIB(父类)的动态代理 代理就是代替处理,就是另一个对象代理原来的对象处理某些逻辑 代理可以给我们带来什么? 在不改变原对象代码的基础上,对原对象的功能进行修改或者增强 解耦 java中的代理模式 java动态代理生成方式分三种:静态代理,基于 jdk (接口) 动态代理、CGLIB(父类)的动态代理 一个静态,两个动态 目标类:原对象,(演员本人) 代理类:代理模式产生的对象,在原有的基础上修改逻辑,并不改变目标类本身(替身

一起加油!!! 441

JAVA代理模式-cglib动态代理的实现(三)

JAVA代理模式-cglib动态代理的实现(三)CGLIB动态代理:导包1.使用了Maven管理项目则引入一下坐标即可。2.未使用maven,则可以通过如下方式导包。在完成环境配置之后,进行CGLIB动态代理的实现:1.编写实体类。2.通过cglib动态生成代理类,动态生成的代理类为实体类的子类。3. 客户端从中介买票CGLIB实现动态代理的完整代码: 代理模式简介、静态代理、JDK动态代理可以参考以下文章: JAVA代理模式-静态代理的实现(一) JAVA代理模式-JDK动态代理的实现(二) CGLIB动

qq_36944952的博客 981

设计模式之代理模式(静态代理、Java动态代理、Cglib动态代理)

代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。 Java代理模式2 Java 代理模式2.1 静态代理小结2.2 动态代理2.2.1 JDK原生的动态代理2.2.2 cglib动态代理小结 2 Java 代理模式 代理模式就是有一个张三,别人都没有办法找到他,只有他的秘书可以找到他。那其他人想和张三交互,只能通过他的秘书来进行转达交互。这个秘书就是代理者,他代理张三。 再看看另一个例子:卖房子

学习是为了让运气刚好能碰上你的努力 538

静态代理,JDK动态代理、CGLib动态代理,这篇文章就够了(设计模式—代理模式)

静态代理,JDK动态代理、CGLib动态代理,这篇文章就够了(设计模式—代理模式)

m0_63324772的博客 1394

【设计模式系列8】深入分析代理模式(JDK动态代理和CGLIB动态代理)

深入分析JDK代理和CGLIB代理模式前言 前言

zwx900102的博客 2838

【深入浅出设计模式】代理模式(jdk/cglib动态代理)

对代理模式的一些总结,主要学习一下jdk动态代理和cglib动态代理,这也是面试常问的。

lans_g的博客 658
上一篇: 使用spring安全容器管理web程序
下一篇: spring security 的大整合
java_lilin
博客等级 码龄14年 364粉丝 124原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值