`
dwj147258
  • 浏览: 191959 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

javaJDK实现代理

阅读更多

首先:先来写一个实现类的接口,比如我们就写一个火车启动的过程

public interface Train  
{  	
    public void move() ; 
    
    public void stop();
}

 因为JDK代理必须使用接口来实现,所以接口是必须的,然后我们就来写一个实现类,来实现火车的启动与停止,

public class TrainImp implements Train
{  	
    public void move()  
    {  
        System.out.println("火车开动了。。。");  
    }  
    public void stop(){
    	System.out.println("火车停止了。。。");
    }
}

接着我们要实现的时通过代理来在Train的方法,,在调用对象的方法前来加入一些东西

public class JDKProxyTest implements InvocationHandler{
	private Object object ; 
	
	public Object createProxy(Object obj){
		this.object = obj ;
		return Proxy.newProxyInstance(object.getClass().getClassLoader(), object.getClass().getInterfaces(), this);
	}
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		System.out.println("befor");
		method.invoke(object, args);
		System.out.println("after");
		return null ;
	}

}

 这样一个代理类就写好了,最后是测试方法

public class MainTest {
	public static void main(String[] args) {
		JDKProxyTest test = new JDKProxyTest() ;
		Train obj = (Train) test.createProxy(new TrainImp());
		obj.move();
		obj.stop();
	}
}

 在move方法前方法后都会有befor或者是after,这就是jdk实现代理的过程

 

分享到:
评论

相关推荐

    java jdk 动态代理演示demo

    Java JDK 动态代理是一种强大的特性,它允许我们在运行时创建代理对象,这些代理对象能够拦截方法调用并在调用前后执行自定义的行为。在Java中,动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang.reflect....

    java-jdk动态代理的实现demo

    Java JDK 动态代理是一种强大的特性,它允许我们在运行时创建代理类,这些代理类可以扩展或修饰已存在的接口实现。动态代理在很多场景下非常有用,比如日志记录、性能监控、事务管理等,这些功能可以在不修改原始...

    java jdk 动态代理 演示demo

    Java JDK 动态代理是一种强大的特性,它允许我们在运行时创建代理对象,这些代理对象可以扩展或增强已存在的接口实现。动态代理在处理AOP(面向切面编程)场景、事件监听、性能监控等方面有着广泛的应用。下面我们将...

    java jdk 动态代理演示demo2

    Java JDK 动态代理是一种强大的特性,它允许我们在运行时创建代理类,这些代理类可以扩展或修饰已存在的接口实现。动态代理在处理跨层调用、事务管理、日志记录、性能监控等方面非常有用,尤其在AOP(面向切面编程)...

    java代理机制 JDK动态代理和cglib代理 详解

    本文将深入探讨两种主要的Java代理实现:JDK动态代理和CGLIB代理。 一、JDK动态代理 JDK动态代理基于接口实现,它要求被代理的类必须实现至少一个接口。在运行时,Java会动态地创建一个新的类,这个类实现了与原始...

    Java JDK 实现AOP

    ### Java JDK 实现AOP详解 #### AOP的起源与发展 面向方面编程(Aspect-Oriented Programming,简称AOP)是一种编程范式,由施乐公司帕洛阿尔托研究中心(Xerox PARC)在20世纪90年代发明。AOP的初衷是为了更好地...

    jdk动态代理模式的分析与底层实现

    基于java的jdk动态代理, 比较了静态代理与动态代理的区别,以及动态代理的底层实现,反编译class文件 jdk动态代理和cglib的区别

    JAVA JDK静态代理、动态代理、CGlib代理的代码演示

    CGlib通过创建目标类的子类并重写其中的方法来实现代理。 ```java // 引入cglib库 <groupId>cglib <artifactId>cglib <version>3.3.0 // 使用CGLIB创建代理 Enhancer enhancer = new Enhancer(); enhancer....

    关于jdk动态代理的源码剖析

    - **只能代理实现了接口的类**:这是JDK动态代理的一个限制,如果目标对象没有实现任何接口,则无法使用JDK动态代理。 - **性能开销**:虽然这种开销通常很小,但在高并发场景下可能会成为瓶颈。 通过上述分析,...

    Java JDK动态代理实现原理实例解析

    Java JDK动态代理实现原理实例解析 Java JDK动态代理实现原理实例解析是指通过Java JDK提供的代理机制来实现动态代理的原理和实例解析。动态代理是一种非常重要的设计模式,它可以在运行时生成代理类,从而实现了...

    JAVA JDK6学习笔记

    - **动态代理**:允许在运行时创建实现一组给定接口的新类。 - **增强的for循环**(foreach):简化了遍历数组和集合的操作。 - **try-catch-finally增强**:可以捕获多个异常,且finally块可以有返回值。 - **...

    JDK动态代理_JDK动态代理

    JDK动态代理的核心API包括`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`。 - **`java.lang.reflect.Proxy`**:提供了创建动态代理类和实例的方法。通过`newProxyInstance`方法,传入...

    JAVA JDK API 1.6 1.7 1.8 中文版 帮助文档

    - 动态代理:增加了`java.lang.invoke`包,支持运行时动态创建代理类和方法调用处理。 - NIO.2:引入了新的I/O API,如文件系统API,异步I/O等,提高了文件操作性能。 - Swing增强:包括JTable和JTree性能提升,...

    JAVA JDK1.6源代码

    对于Java开发者来说,深入理解JDK源代码能够提升编程技能,了解底层实现,优化代码性能,以及解决复杂问题。以下将从多个方面详细介绍JDK1.6源代码中的关键知识点。 1. **核心类库解析** - `java`包:包含Java标准...

    浅谈JDK动态代理与CGLIB代理去区别

    在Java开发中,动态代理和CGLIB代理是两种常见的面向切面编程(AOP)实现方式,它们都用于在不修改原有代码的情况下,增强或扩展对象的功能。本篇文章将深入探讨JDK动态代理和CGLIB代理的区别,以及它们在实际应用中...

    Java JDK的源代码

    此外,还可以了解到一些高级特性,如动态代理、反射、类加载器等的实现细节。 总之,研究Java JDK的源代码是一项深入学习之旅,可以让我们从源头上理解Java的运行机制,提升编程能力,解决实际问题。这不仅仅是对...

    Java JDK代理、CGLIB、AspectJ代理分析比较

    - **CGLIB代理**:适用于未实现接口的类,通过继承的方式来实现代理功能,但可能会导致继承层次结构变得复杂。 - **AspectJ**:提供了更为强大的AOP支持,可以实现更复杂的切面逻辑,但在使用上相对复杂。 综上所述...

    java jdk api 中文chm版

    1.6版本是Java的一个重要里程碑,它引入了许多增强特性,如改进的内存管理、新的并发工具、动态代理类、NIO.2(New I/O API)等。 4. **CHM文档特点** CHM文档有以下几个优势: - 离线访问:可以随时查阅,无需...

    Spring框架中JDK动态代理和cglib动态代理

    CGLIB 动态代理可以代理没有接口的类,這是因为 CGLIB 动态代理可以生成一个原类的子类,然后 override 原类的方法来实现代理。 在 Spring AOP 框架中,默认情况下,Spring 会选择使用 JDK 动态代理,但是如果目标...

    java 动态代理实例(JDK代理与CGLIB代理)

    **JDK代理**是基于接口的代理,它通过`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口实现。当我们的目标对象实现了特定的接口时,我们可以使用JDK动态代理来创建该对象的代理。以下是JDK...

Global site tag (gtag.js) - Google Analytics