1、创建接口:
package cn.com.gan.Proxy;
public interface Person {
String getName();
String getGender();
void setName(String name);
void setGender(String gender);
void setRate(int rate);
int getRate();
}
2、实现接口:
package cn.com.gan.Proxy;
public class Chinese implements Person {
String name;
String gender;
String interests;
int rate;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getInterests() {
return interests;
}
@Override
public int getRate() {
return rate;
}
@Override
public void setRate(int rate) {
this.rate=rate;
}
}
3、实现InvocationHandler接口:
package cn.com.gan.Proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class ChineseHander implements InvocationHandler {
Object object=null;
public ChineseHander(Object object){
this.object=object;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object result=null;
if(!method.getName().equals("setRate"))
result=method.invoke(object, args);
else
System.out.println("不能够设置setRate");
return result;
}
private void doAfter() {
System.out.println("do before hello");
}
private void doBefore() {
System.out.println("do after hello");
}
}
4、测试:
package cn.com.gan.Proxy;
import java.lang.reflect.Proxy;
public class HelloProxyTest {
/**
* @param args
*/
public static void main(String[] args) {
Person chinese = new Chinese();
ChineseHander chd = new ChineseHander(chinese);
Person chineseProxy = (Person) Proxy.newProxyInstance(chinese
.getClass().getClassLoader(), chinese.getClass()
.getInterfaces(), chd);
chineseProxy.setName("panda");
System.out.println(chineseProxy.getName());
chineseProxy.setRate(1);
System.out.println(Proxy.isProxyClass(chineseProxy.getClass()));
}
}
比较好的参考资料:
http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/
分享到:
相关推荐
Java动态代理是Java编程中一个重要的特性,它允许我们在运行时创建对象的代理,从而可以在不修改原有代码的情况下,对原有对象的行为进行扩展或增强。动态代理主要分为两种:JDK代理和CGLIB代理。 **JDK代理**是...
几个Java反射和动态代理的小例子。可以学习如何通过Java的反射机制实例化对象、调用对象的方法、操作对象的私有成员变量、改变数组中的某项的值、改变数组大小等;可以学习Java的动态代理模式、学习Java工厂模式以及...
Java动态代理是Java编程中一个重要的特性,它允许我们在运行时创建代理对象,这些代理对象可以代表并增强原对象的功能。动态代理在很多场景下都非常有用,比如日志记录、性能监控、事务管理等。本示例将带你深入理解...
Java动态代理是Java编程中一个重要的特性,它允许在运行时创建代理对象,这些代理对象可以代表并增强原对象的功能。动态代理主要应用于面向切面编程(AOP)和事件监听等场景,使得代码更加模块化,易于维护。以下是...
在Java编程语言中,动态代理是一种强大的特性,它允许我们在运行时创建代理对象来扩展或增强已有对象的功能。动态代理通常用于实现回调、事件监听、事务管理、性能监控等多种功能。下面我们将深入探讨三个动态代理的...
1. `java.lang.reflect.Proxy`:这个类是Java动态代理的基石,提供了生成代理类和实例的方法。`newProxyInstance()`方法是关键,它接受类加载器、接口列表和一个实现了`InvocationHandler`的实例作为参数,返回代理...
我们先来看Proxy类,它是Java动态代理的核心,它提供了一种机制,能够基于接口生成代理类的实例。 1. **Proxy类的使用**: - 首先,你需要有一个或多个接口,代理对象会实现这些接口。 - 然后,定义一个...
Java JDK 动态代理是一种强大的特性,它允许我们在运行时创建代理对象,这些代理对象可以扩展或增强已存在的接口实现。动态代理在处理AOP(面向切面编程)场景、事件监听、性能监控等方面有着广泛的应用。下面我们将...
Java动态代理是Java编程中一个重要的特性,它允许我们在运行时创建代理类,这些代理类可以作为原有类的代理,从而在不修改原有类代码的情况下,扩展或增强原有类的功能。这里我们将深入探讨两个主要的Java动态代理...
java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象...
java源码包J实例源码JAVA开发源码55个合集: Java中的Blowfish对称密钥加密算法类和实例.rar Java中的EJB编程实例代码.rar Java中的SSL及HTTPS协议实例源码.rar Java写的ATM机取款模拟程序.zip Java写的一个mp3播放器...
在Java编程领域,动态代理和Cglib代理是两种常用的技术,用于在运行时创建对象的代理,以实现额外的功能,如AOP(面向切面编程)中的日志、事务管理等。本篇文章将深入探讨这两种代理机制,尤其是Cglib代理。 首先...
本文将深入探讨两种主要的Java代理实现:JDK动态代理和CGLIB代理。 一、JDK动态代理 JDK动态代理基于接口实现,它要求被代理的类必须实现至少一个接口。在运行时,Java会动态地创建一个新的类,这个类实现了与原始...
Java动态代理是Java语言提供的一种机制,它允许在运行时创建一个对象的代理,这个代理对象可以在调用实际方法之前和之后添加额外的功能。在Java中,动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang....
在本实例中,我们将深入探讨Java中的代理模式及其应用。 代理模式的核心思想是为一个对象创建一个代理对象,这个代理对象在客户端和目标对象之间起到中介的作用。它可以控制目标对象的访问,也可以在调用目标对象的...
本实例主要讲解了如何通过Java调用动态库(DLL),特别是使用JNA(Java Native Access)和JNative两种不同的库来进行操作。下面我们将详细探讨这两个库以及它们在不同场景下的应用。 1. JNA(Java Native Access) ...
在这个“java代理实例”中,我们将会深入探讨Java动态代理(Dynamic Proxy)以及静态代理(Static Proxy)的概念,这两种方法都是实现代理模式的关键。 一、Java动态代理 动态代理是Java内置的机制,主要依赖于`...
而动态代理则是在运行时动态生成代理类,通常使用`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现。动态代理常用于事件处理、事务管理、日志记录等场景,它可以在方法调用前后添加...
Java 动态代理技术是Java平台提供的一种强大的编程机制,它允许我们在运行时创建具有特定接口的代理对象,这些代理对象可以对方法调用进行拦截和处理,这正是AOP(面向切面编程)的核心思想。在Java中,动态代理主要...
当调用`Proxy.newProxyInstance`方法时,Java虚拟机会根据传入的`ClassLoader`对象、一组接口以及`InvocationHandler`实例动态生成一个实现了指定接口的代理类。这个代理类会在运行时由JVM动态创建,而不是事先编译...