2019独角兽企业重金招聘Python工程师标准>>>

cglib实现动态代理构建带参数的代理实例:

package com.carl.test.proxy.cglib;import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;/*** Created by Carl on 14-12-30.*/
public class CglibProxy implements MethodInterceptor{/*** 创建代理对象方法** @param target        代理对象* @param args          对应的构造器参数类型**                          例:有构造器如下*                          public Person(name,age){...} name为String.class age为int.class*                          写入name的类型与age的类型**                          则:new Class[]{String.class,int.class}** @param argsValue     对应的构造器参数值**                          例:如此创建对象 new Person("name",23) 用以下方式传入:new Object[]{"name",23}** @param <T>           <泛型方法>* @return              返回跟代理对象类型*/public <T> T getInstance(T target,Class[] args,Object[] argsValue){Enhancer enhancer = new Enhancer();enhancer.setSuperclass(target.getClass());enhancer.setCallback(this);return (T) enhancer.create(args,argsValue);}/*** 创建代理对象方法** @param target        代理对象* @param <T>           <泛型方法>* @return              返回跟代理对象类型*/public <T> T getInstance(T target){Enhancer enhancer = new Enhancer();enhancer.setSuperclass(target.getClass());enhancer.setCallback(this);return (T) enhancer.create();}@Overridepublic Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {Object result = null;try{System.out.println("Before "+method.getName()+" ..");result = methodProxy.invokeSuper(o,objects);System.out.println("End "+method.getName()+" ..");}catch(Exception e){System.out.println("Errod "+method.getName()+" ..");}return result;}
}

需引入 cglib-2.1.3.jar 和 asm.jar

转载于:https://my.oschina.net/u/1866821/blog/364773

​cglib实现动态代理构建带参数的代理实例相关推荐

  1. C++带参数控制台(实例)

    话不多说,程序运行如下: 下面是先贴源码,再解析关键点,最后说下这个关键点的有个"坑" 代码如下: #include<stdio.h> #include <win ...

  2. akka入门系列-3. Actor进阶:创建带参数的actor和发送复杂的消息类型

    3. Actor进阶:创建带参数的actor和发送复杂的消息类型 上一篇实现了actor的创建,但是这个actor并不能满足我们生产中的要求.主要有以下2点: 构建actor类时,需要带参数或配置 消 ...

  3. Java Cglib 动态代理intercept的参数含义

    如何使用CGLIB创建动态代理,网上已经有很多资料,这里就不再赘述. 直接说结论. 当我们使用自定义类 private static class MethodInterceptorImpl imple ...

  4. jdk中的动态代理和cglib中动态代理的区别

    jdk中动态代理: 要求目标对象必须实现了某个接口. 代理对象和目标对象要想实现相同的功能,在底层的表现是代理对象和目标对象实现了相同的接口,因此获取代理对象后(Object类型),应该向下转型为目标 ...

  5. Java使用Proxy和CGLib实现动态代理

    在java中对一个方法进行改造有几种方法可以实现,分别是最常用的继承(extends).动态代理和装饰者模式.继承是最简单也是用的最多的方法,但是还是有一些场景不适用,这个时候就可能会用到动态代理.使 ...

  6. JDK动态代理和Cglib的动态代理

    2019独角兽企业重金招聘Python工程师标准>>> 最简单的是静态代理方法,即代理模式,这里就不多啰嗦了.. 重点说一下JDK的动态代理和Cglib的动态代理吧 先说JDK的,需 ...

  7. Java之jdk和CGLib实现动态代理

    1 jdk实现动态代理源码实现 这里需要用到InvocationHandler接口 public interface Hello {public void sayHello(); } public c ...

  8. mysql带参数的sql_MySql存储过程是带参数的存储过程(动态执行SQL语句)

    下文介绍的MySql存储过程是带参数的存储过程(动态执行SQL语句),该MySql存储过程是根据用户输入的条件和排序方式查询用户的信息,排序条件可以没有调用方式: call GetUsersDynam ...

  9. 爬虫学习day1遇到问题汇总(带参数的访问百度,代理,金山翻译只能翻译一个固定单词

    带参数访问百度出现title为安全验证问题或loding 显示loding 在header里面需要有cookie,accept-language,accept,usera-gent这几个 代理问题 代 ...

最新文章

  1. 腾讯优图8篇论文入选ECCV 2020,涵盖目标检测/跟踪/Re-ID/人脸等领域
  2. 深度增强学习方向论文整理
  3. 简述泛型的上界和下界?
  4. C++ 多态实现机制
  5. 《C和指针》读书笔记-第六章指针
  6. BUUCTF-Reverse:内涵的软件
  7. mysql-workbench运行存储过程
  8. 网管型交换机比普通交换机有哪些明显优势
  9. php 选股器,RSI切线突破选股指标(TDX)..
  10. Hello OpenGL——OpenGL在Visual c++6.0安装和配置
  11. String类的常见方法的使用案例
  12. 【UWP通用应用开发】控件、应用栏
  13. github打开前端样式丢失_微信小程序入门教程之二:页面样式
  14. python创建docx文件
  15. java myqq ui_GitHub - ANDRYHU2020/myqq: Java版SWing“高”仿QQ即时通聊天系统
  16. 如何在FLASH中实现眨眼睛的动画效果
  17. 如何下载b站视频到本地
  18. 不可思议!信用报告也能出错?
  19. 【Python】 -- from module import * 、from module import function 与 import module
  20. 机器学习实战:第一章

热门文章

  1. 当PrintForm遇到RPC服务不可用的错误”
  2. “阿一web标准学堂”选修课:EditPlus高级使用技巧(附视频、课件、代码下载)...
  3. 好程序员Web前端教程分享Vue学习心得
  4. 2019 年,容器技术生态会发生些什么?
  5. Linux MySQl 5.7.17 MySQL ERROR 1366(HY000):Incorrect string value 解决方法
  6. CentOS查看主板型号、CPU、显卡、硬盘等信息
  7. C#.Net 如何动态加载与卸载程序集(.dll或者.exe)6-----在不卸载程序域的前提下替换程序集文件。...
  8. 【干货】前端自学之路(持续更新)
  9. 《数值分析(原书第2版)》—— 第0章 基 础 知 识
  10. React Native进行签名打包成Apk