`
huzhenyu
  • 浏览: 191893 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java动态代理入门示例

    博客分类:
  • JAVA
阅读更多
package com.huzy.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class ProxyDemo {
	public static void main(String[] args) {
		//测试
		UserDAO userDAO = new UserDAOImpl();
		MyInvocationHandler invocationHandler = new MyInvocationHandler();
		invocationHandler.setTarget(userDAO);
		UserDAO proxyUserDAO = (UserDAO) Proxy.newProxyInstance(userDAO.getClass().getClassLoader(), new Class[]{UserDAO.class}, invocationHandler);
		proxyUserDAO.save();
	}
}

class MyInvocationHandler implements InvocationHandler {

	private Object target;
	
	public void before() {
		System.out.println("before method invoke do something");
	}
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		this.before();
		method.invoke(target, args);
		return null;
	}
	
	public Object getTarget() {
		return target;
	}
	
	public void setTarget(Object target) {
		this.target = target;
	}
}

interface UserDAO {
	public void save();
}

class UserDAOImpl implements UserDAO{

	@Override
	public void save() {
		System.out.println("user dao save invoke");
	}
	
}
1
0
分享到:
评论

相关推荐

    java动态代理 经典文章(word 2007格式的)

    Java动态代理是Java编程中一个重要的特性,它允许在运行时创建代理对象,这些代理对象可以代表并增强原对象的功能。动态代理主要应用于面向切面编程(AOP)和事件监听等场景,使得代码更加模块化,易于维护。以下是...

    Java开发从入门到精通 扶松柏,陈小玉编著 2016.09 随书光盘

    7. **Java高级特性**:涵盖反射、动态代理、注解、枚举等Java的高级特性和应用场景。 8. **Java EE**:如果光盘内容涉及,可能会介绍Java企业级应用开发,如Servlet、JSP、JDBC数据库访问、EJB等技术。 9. **实战...

    webrtc初学者的入门示例应用

    这个“webrtc初学者的入门示例应用”是为那些想要学习如何使用WebRTC构建跨平台通信系统的人准备的。通过这个项目,你将了解如何在Web、Android、iOS和Windows上实现视频和音频通信的基本流程。 1. **基本概念** -...

    Java入门到精通完整教程+源码.zip

    反射允许你在运行时检查和修改类的信息,这在插件系统和动态代理中非常有用。 此外,你还将学习Java的泛型,它提供了类型安全,减少了在编译时和运行时的错误。还有Java的接口和模块化,这些是大型项目中保持代码...

    mybatis入门示例项目

    6. MyBatis工作原理:MyBatis将Java对象与XML或注解形式的SQL语句绑定,通过动态代理技术生成SQL执行器。在执行SQL时,MyBatis会根据传入的参数自动填充SQL中的占位符,然后调用JDBC API执行SQL并处理结果集,最后将...

    Java入门基础.pdf

    * Java中的Runnable、Callable、Future、FutureTask的区别与示例 * Java程序死锁问题原理及解决方案 * 线程锁技术 * 定时器、互斥、同步通信技术 * 多个线程之间共享数据的方式探討 * 使用JDK5中同步技术的3个面试题...

    JAVA2范例入门与提高 光盘源码

    Java反射和动态代理也是Java2的高级特性,它们允许在运行时检查类的信息并创建对象,或在运行时实现接口。源码中可能包含这些高级功能的实例,有助于提升你对Java更深层次的理解。 最后,JDBC(Java Database ...

    SIP协议的java入门

    1. 用户代理(User Agent, UAC/UAS):发起和接收SIP请求的实体,分为用户代理客户端(UAC)和用户代理服务器(UAS)。 2. 代理服务器(Proxy Server):转发SIP消息,处理路由,提供服务。 3. 注册服务器(Register...

    入门神器《20天上手Java基础视频》

    再者,课程深入剖析JDK源码,讲解了Java反射和动态代理等高级特性,帮助学员建立深厚的Java技术根基。最后,尚硅谷提供了免费的技术讲师在线答疑服务,为学员解决了学习过程中的疑惑,增强了学习效果。 课程内容...

    Java 2范例入门与提高

    12. **Java的反射机制**:反射允许程序在运行时动态地获取类的信息,并对类的对象进行操作,是Java强大功能之一,常用于插件系统、序列化、动态代理等领域。 13. **泛型**:泛型是Java 5引入的新特性,提供了类型...

    domino-web-java快速开发入门

    这些源码实例可能涉及到Java agents(代理)、JDBC连接、XPages等技术。 “可以与java整合使用,二次开发”这部分说明了如何利用Java语言增强Domino应用程序的功能。Java可以在Domino中用于编写服务器端逻辑,比如...

    Java WebService入门实例

    本篇将详细介绍Java WebService的入门实例,包括其工作原理以及如何创建和测试一个简单的WebService。 1. **WebService工作原理-SOAP** SOAP(Simple Object Access Protocol)是WebService通信的基础,它是一种...

    java反射 详解 入门到掌握

    - **动态代理**:`java.lang.reflect.Proxy`类用于创建动态代理,实现接口方法的拦截和扩展。 - **数据库持久化**:ORM框架如Hibernate利用反射将对象与数据库表映射。 - **插件系统**:插件加载和调用其功能时,...

    Java字节码和asm入门资料

    ASM是一个开源的Java字节码操控和分析框架,它可以直接用来生成和修改Java类文件,是Java动态代理和字节码增强技术的重要工具。在深入学习Java字节码和ASM之前,我们需要先理解Java编译和运行的基本过程。 1. **...

    JAVA语言入门.rar

    这对于框架开发、插件化、动态代理等场景非常有用。 15. **Java API** Java API是Java的标准库,包含了大量的预定义类和接口,提供了丰富的功能,如集合操作、网络通信、数据库连接等。熟悉API文档能有效提升开发...

    Java_2从入门到精通

    最后,可能会涉及到Java的高级特性,如反射、注解(Annotation)、动态代理、枚举(Enum)、Lambda表达式和Stream API,这些都是Java 8及以上版本引入的新特性,极大地提高了代码的简洁性和可读性。 在学习过程中,...

    java SE(入门知识2)-JDK环境变量设置.docx

    3. **JDK 1.6(6.0)"Mustang"**:这一版本进一步增强了性能,改进了内存管理和垃圾收集,并增加了许多新的API,如Swing的改进和动态代理。 ### JDK的安装与环境变量配置 安装JDK后,通常会在安装目录下看到两个子...

    rabbitMQ java客户端入门

    ### RabbitMQ Java客户端入门知识点详解 #### 一、RabbitMQ概述 - **定义与功能**:RabbitMQ是一款开源消息代理软件,基于Erlang语言开发,支持多种消息协议,如AMQP(Advanced Message Queuing Protocol)。其...

    java Spring+RMI入门程序源代码

    本项目提供了一个入门级的源代码示例,帮助开发者理解如何在 Spring 环境下集成 RMI 技术。以下是关于这两个技术及其整合的详细知识点: **Spring 框架** 1. **Spring 概述**:Spring 是一个开源的 Java 应用开发...

    java 算法入门到精通

    ### Java算法入门到精通知识点概览 #### 一、二进制基础 - **基础知识**: - 二进制的概念及其在计算机科学中的应用。 - 二进制数与十进制数之间的转换方法。 - 二进制运算(加减乘除)的基本原理。 - **高级...

Global site tag (gtag.js) - Google Analytics