- 浏览: 173079 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (104)
- JavaScript备忘 (11)
- Java编程 (23)
- struts框架 (3)
- hibernate框架 (0)
- ibatis框架 (2)
- C++编程 (2)
- 数据库 (8)
- 操作系统 (2)
- Extjs (0)
- 基于web的工作流引擎设计 (0)
- 开发异常备忘 (5)
- 项目管理工具 (6)
- Spring框架 (3)
- HTML (1)
- 项目架构 (1)
- 备忘 (20)
- 设计模式 (9)
- Disruptor (0)
- CQRS (0)
- DDD (0)
- Axon (0)
- JavaScript (1)
- 微信 (0)
- 新浪微博 (1)
- 软件备份 (2)
- AngularJS (1)
- 安全性 (1)
- Linux (2)
- 工具 (4)
- OSGI (1)
- idea (2)
- Docker (1)
- 测试相关 (0)
- WebService (1)
- 数据安全 (0)
- 移动开发 (0)
- springboot (1)
最新评论
-
larryscale:
zz_wangyuhoho 写道你这个工程跑不起来呀我测试过的 ...
Springmvc3+Spring3+MyBatis3 -
zz_wangyuhoho:
你这个工程跑不起来呀
Springmvc3+Spring3+MyBatis3 -
aeolusj:
var myAlert=alert;改为var myAlert ...
js 拦截alert对话框 -
skcks:
建行内部开发平台也是做了一个类似的封装用于ajax远程调用服务 ...
通用Ajax设计 -
qiuyu1990:
这个应该是 DWR的原理吧
通用Ajax设计
一. 用cglib 实现java 的動態代理
用cglib 實現的動態代理,被代理的目标是一个普通的类,并不像jdk动态代理那样必須實現一個接口才可以.其實現主是通過net.sf.cglib.proxy.MethodInterceptor接口,即可完成对目标对象的代理;
二. 首先在classpath下導入動態代理所依賴的jar包:cglib-nodep-2.1_3.jar(見附件)
二. 本章用'售票點代理車站售票'的示例來演示如何用cglib来實現对java的動態代理.完整代碼如下:
1. 被代理目標类
package structuralPattern.proxy.cglib; /** * @ClassName: TrainStation * @Description:目标代理类 * @author Liyongbin * @date 2011-2-9 上午09:59:37 * @version V1.0 */ public class TrainStation { public void saleTicet(){ System.out.println("卖火车票"); } }
2. 動態代理类
package structuralPattern.proxy.cglib; import java.lang.reflect.Method; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; /** * @ClassName: DynamicProxy_cglib * @Description:動態代理类 * @author Liyongbin * @date 2011-2-9 上午10:21:33 * @version V1.0 */ public class DynamicProxy_cglib implements MethodInterceptor { private Object target; public Object getProxy(Object targetObject) { this.target = targetObject; Enhancer proxy = new Enhancer(); proxy.setSuperclass(target.getClass()); proxy.setCallback(this); return proxy.create(); } @Override public Object intercept(Object proxyObject, Method proxyMethod, Object[] paramArray, MethodProxy methodsProxy) throws Throwable { deliverTicket(); Object proxy = proxyMethod.invoke(target, paramArray); discountTicket(); return proxy; } // "代理"自己的方法1 public void deliverTicket() { System.out.println("送票上門服務"); } // "代理"自己的方法2 public void discountTicket() { System.out.println("買票打折服務"); } }
3. 測試動態代理
package structuralPattern.proxy.cglib; /** * @ClassName: DynamicProxyTest * @Description:測試動態代理 * @author Liyongbin * @date 2011-2-9 上午09:59:15 * @version V1.0 */ public class DynamicProxyTest { public static void main(String[] args) { DynamicProxy_cglib proxy = new DynamicProxy_cglib(); TrainStation ts = (TrainStation)proxy.getProxy(new TrainStation()); ts.saleTicet(); } }
4. 測試結果如下:
送票上門服務
卖火车票
買票打折服務
- cglib-nodep-2.1_3.jar (316.6 KB)
- 下载次数: 23
发表评论
-
Springboot项目(整合WebService带协议头验证+WebSocket+Web+动态日志输出)
2020-05-12 14:05 1001环境配置: springboot 1.5.14 ... -
activiti5.18 默认查询的sql生成两个order by
2019-10-17 12:14 330<spring.version>4.2.4.RE ... -
springboot 定时任务重复执行
2019-06-04 17:35 2091开发一数据接收WebService,里面用到定时任务@Sc ... -
mybatis-generator自动生成代码[增加Service的生成]
2016-03-22 10:08 9744源码包见附件[Maven项目,在1.3.2基础上修改官方源码] ... -
网络状态监控
2014-06-27 12:56 581import java.io.BufferedReader; ... -
Spring MVC+Jquery Ajax 前后台传递Json对象
2014-03-29 10:02 6093关于Spring MVC3.X 接收和返回Json ... -
同时启动多个Tomcat服务器
2013-10-25 17:15 548我所用Tomcat服务器都为zip版,非安装版。以两个为例: ... -
md5+BASE64加密
2013-10-08 23:20 939import sun.misc.BASE64Encoder; ... -
用MD5对密码进行加密
2013-08-10 15:21 969package com.yong.bin.md5; i ... -
把CST格式的字符串转成普通的日期格式
2013-02-27 15:58 1500public static void main(Str ... -
Springmvc3+Spring3+MyBatis3
2012-11-27 15:03 1317最近写的一个三层框架:Springmvc3+Spring3+ ... -
Java技术——内部类
2012-11-18 17:35 866内部类 (inner class) 定义:在一个类中定义 ... -
自定义标签
2012-10-26 17:13 0<?xml version="1.0" ... -
log4j.properties
2012-10-24 12:32 0log4j.rootLogger=INFO, log4j ... -
通用Ajax设计
2012-10-21 10:20 1920利用Servlet和反射技术实现通用的Ajax调用设计,如下: ... -
导入Jar包的快捷键
2012-07-02 22:47 1119导入当前光标所在的地方未导入的Jar包: shift+ctrl ... -
Extjs grid 后台
2012-05-22 08:16 0public String gridRecordsByXML( ... -
Extjs 布局
2012-04-18 12:27 0<%@ page language="java ... -
FreeMarker在java项目中的应用
2011-02-15 21:34 3170一、体验FreeMarker FreeMar ... -
动态代理 [用jdk实现]
2011-02-08 16:41 1137一. java 的jdk動態代理 ...
相关推荐
JAVA动态代理实现Demo(JDK动态代理和CGLIB动态代理)
AOP之JDK动态代理和CGLib动态代理 ,具体效果和过程看博文 http://blog.csdn.net/evankaka/article/details/45195383
实现java动态代理的两个实例,jdk动态代理和cglib
分别使用jdk和cglib实现动态代理,包含UML图。还有相关的博客链接:http://blog.csdn.net/y_love_f/article/details/46345581.博客中有具体的代理解释
代理模式详解-jdk与cglib动态代理与底层实现,spring中常用的设计模式,本案例是从源码到代理模式的实现。
基于MAVEN项目的CGLib动态代理原理及实现
NULL 博文链接:https://gz383.iteye.com/blog/591079
JDK动态代理必须提供接口才能使用,在一些不能提供接口的环境中,只能采用其他第三方技术,比如CGLIB动态代理,这里提供CGLIB动态代理的相关jar包,供学习和测试使用。
java常用设计模式及JDK与CGLIB实现动态代理区别(源码) /** * 使用cglib动态代理 * @author * */ public class BookFacadeProxy implements MethodInterceptor{ private Object target; @Override public...
cglib实现动态代理依赖jar包,包括asm-5.1.jar和cglib-3.2.4.jar
JDK和CGlib分别实现的动态代理源代码
cglib实现动态代理,有源代码,详细的实例,逐步分析,实现动态代理。
简介Java编程的目标是实现现实不能完成的,优化现实能够完成的,是一种虚拟技术。生活中的方方面面都可以虚拟到代码中。代理模式所讲的就是现实生活中的这么一个概念:
Cglib代理,也叫做子类代理。在内存中构建一个子类对象从而实现对目标对象功能的扩展。如果想代理没有实现接口的类,就可以使用CGLIB实现。这是一个简单的案例。
我们在阅读一些 Java 框架的源码时,基本上常会看到使用动态代理机制,它可以无感的对既有代码进行方法的增强,使得代码拥有更好的拓展性。 通过从静态代理、JDK 动态代理、CGLIB 动态代理来进行本文的分析。 静态...
静态代理--不适合企业开发,适合初学者理解代理。 jdk动态代理--适合企业级开发,但是它要求必须面向接口编程,假如目标类没有实现接口...spring 的AOP功能中 会根据目标类是否实现了接口来判断使用 jdk Proxy还是cglib
一个用CGlib实现Java动态代理的简单、完整的好例子!
代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以...
NULL 博文链接:https://huihai.iteye.com/blog/858524
cglib包及依赖汉cglib3.1和asm4.2,主要作用是...JDK的动态代理用起来非常简单,但它有一个限制,就是使用动态代理的对象必须实现一个或多个接口。如果想代理没有实现接口的继承的类,该怎么办?现在我们可以使用CGLIB包