- 浏览: 173975 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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设计
一. java 的jdk動態代理
用JDK實現的動態代理,被代理的對象必須實現一個接口才可以.其實現主是通過java.lang.reflect.Proxy類和 java.lang.reflect.InvocationHandler接口;
二. 本章用'售票點代理車站售票'的示例來演示java 的jdk動態代理的實現.完整代碼如下:
1. [被代理目標要實現的接口]
package structuralPattern.proxy.jdk; /** * @ClassName: ITarget * @Description:賣票接口 * @author Liyongbin * @date 2011-2-8 下午12:52:09 * @version V1.0 */ public interface ITicket { public abstract void saleTicket(); }
2. 車站售票[被代理目標]
package structuralPattern.proxy.jdk; /** * @ClassName: Train * @Description:車站 * @author Liyongbin * @date 2011-2-8 下午12:54:36 * @version V1.0 */ public class Train implements ITicket{ @Override public void saleTicket() { System.out.println("售車票"); } }
3. 售票服務
package structuralPattern.proxy.jdk; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; /** * @ClassName: BuyTicketService * @Description:售票服務 * @author Liyongbin * @date 2011-2-8 下午01:02:36 * @version V1.0 */ public class BuyTicketService implements InvocationHandler { //要代理的目標 private Object target; public BuyTicketService(Object target) { this.target=target; } // @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { deliverTicket(); method.invoke(target, args); discountTicket(); return null; } //"代理"自己的方法1 public void deliverTicket() { System.out.println("送票上門服務"); } //"代理"自己的方法2 public void discountTicket() { System.out.println("買票打折服務"); } }
4. 動態代理
package structuralPattern.proxy.jdk; import java.lang.reflect.Proxy; /** * @ClassName: DynamicProxy_JDK * @Description: 動態代理 * @author Liyongbin * @date 2011-2-8 下午12:58:45 * @version V1.0 */ public class DynamicProxy_JDK { public Object getProxy(Object target) { return Proxy .newProxyInstance(target.getClass().getClassLoader(), target .getClass().getInterfaces(), new BuyTicketService(target)); } }
5. 測試
package structuralPattern.proxy.jdk; public class DynamicProxyTest { public static void main(String[] args) { //實例化代理 DynamicProxy_JDK dp = new DynamicProxy_JDK(); //代理 ITicket ticket = (ITicket) dp.getProxy(new Train()); //調用目標方法 ticket.saleTicket(); } }
6. 運行結果:
送票上門服務
售車票
買票打折服務
发表评论
-
Springboot项目(整合WebService带协议头验证+WebSocket+Web+动态日志输出)
2020-05-12 14:05 1014环境配置: springboot 1.5.14 ... -
activiti5.18 默认查询的sql生成两个order by
2019-10-17 12:14 342<spring.version>4.2.4.RE ... -
springboot 定时任务重复执行
2019-06-04 17:35 2104开发一数据接收WebService,里面用到定时任务@Sc ... -
mybatis-generator自动生成代码[增加Service的生成]
2016-03-22 10:08 9753源码包见附件[Maven项目,在1.3.2基础上修改官方源码] ... -
网络状态监控
2014-06-27 12:56 590import java.io.BufferedReader; ... -
Spring MVC+Jquery Ajax 前后台传递Json对象
2014-03-29 10:02 6107关于Spring MVC3.X 接收和返回Json ... -
同时启动多个Tomcat服务器
2013-10-25 17:15 557我所用Tomcat服务器都为zip版,非安装版。以两个为例: ... -
md5+BASE64加密
2013-10-08 23:20 945import sun.misc.BASE64Encoder; ... -
用MD5对密码进行加密
2013-08-10 15:21 977package com.yong.bin.md5; i ... -
把CST格式的字符串转成普通的日期格式
2013-02-27 15:58 1517public static void main(Str ... -
Springmvc3+Spring3+MyBatis3
2012-11-27 15:03 1329最近写的一个三层框架:Springmvc3+Spring3+ ... -
Java技术——内部类
2012-11-18 17:35 876内部类 (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 1937利用Servlet和反射技术实现通用的Ajax调用设计,如下: ... -
导入Jar包的快捷键
2012-07-02 22:47 1126导入当前光标所在的地方未导入的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 3179一、体验FreeMarker FreeMar ... -
动态代理 [用cglib实现]
2011-02-09 10:28 1198一. 用cglib 实现java 的動態代理 ...
相关推荐
动态代理是使用jdk的反射机制,创建对象的...jdk动态代理,必须有接口,目标类必须实现接口, 没有接口时,需要使用cglib动态代理。 动态代理可以在不改变原来目标方法功能的前提下, 可以在代理中增强自己的功能代码。
模拟JDK动态代理内部实现
分别使用jdk和cglib实现动态代理,包含UML图。还有相关的博客链接:http://blog.csdn.net/y_love_f/article/details/46345581.博客中有具体的代理解释
实现了一份jdk动态代理的demo,做了详细注释,供以后复习使用,另外,这里为什么需要大于100个字节才能传资源?我就不想那么多不行吗???
本工程是对静态代理,动态代理的测试,并且实现了对jdk动态代理的简单模拟!
JDK动态代理源码下载,动态产生代理,实现对【不同类】,【不同方法】的代理
AOP之JDK动态代理和CGLib动态代理 ,具体效果和过程看博文 http://blog.csdn.net/evankaka/article/details/45195383
JAVA动态代理实现Demo(JDK动态代理和CGLIB动态代理)
动态代理::在程序运行时,运用反射机制动态创建而成。 动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码。动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性,因为...
spring aop jdk 动态代理的底层实现解析模拟
基于java的jdk动态代理, 比较了静态代理与动态代理的区别,以及动态代理的底层实现,反编译class文件 jdk动态代理和cglib的区别
jdk动态代理使用及实现分析.one
代理模式详解-jdk与cglib动态代理与底层实现,spring中常用的设计模式,本案例是从源码到代理模式的实现。
JDK和CGlib分别实现的动态代理源代码
JDK动态代理的底层实现原理
NULL 博文链接:https://gz383.iteye.com/blog/591079
CGLIB代理 通过前面的学习可知,JDK的动态代理用起来非常简单,但它是有局限性的,使用动态代理的对象必须实现一个或多个接口。 那么,如何代理没有实现接口的类? CGLIB代理 CGLIB(Code Generation Library)是一...
第一种是JDK提供的基于接口的动态代理,要求被代理的类必须至少实现一个接口。 2. 第二种是第三方cglib提供的基于子类的动态代理,。至少要继承一个类。 我们这里 来讲解,动态代理,以及第一种实现动态代理的方式 ...
实现java动态代理的两个实例,jdk动态代理和cglib
NULL 博文链接:https://54wangyong.iteye.com/blog/1920998