java 简单的动态代理例子
2013-04-18 15:13
260 查看
package util; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy; import java.lang.reflect.Method; //抽象角色:java动态代理的实现目前只支持接口,不支持抽象类 interface BusinessFoo { void foo(); } interface BusinessBar { String bar(String message); } //真实角色:真正实现业务逻辑方法 class BusinessFooImpl implements BusinessFoo { public void foo() { System.out.println("BusinessFooImpl.foo()"); } } class BusinessBarImpl implements BusinessBar { public String bar(String message) { System.out.println("BusinessBarImpl.bar()"); return message; } } //动态角色:动态生成代理类 class BusinessImplProxy implements InvocationHandler { private Object obj; BusinessImplProxy() { } BusinessImplProxy(Object obj) { this.obj = obj; } public Object invoke(Object proxy,Method method,Object[] args) throws Throwable { Object result = null; doBefore(); result = method.invoke(obj,args); doAfter(); return result; } public void doBefore(){ System.out.println("do something before Business Logic"); } public void doAfter(){ System.out.println("do something after Business Logic"); } public static Object factory(Object obj) { Class cls = obj.getClass(); return Proxy.newProxyInstance(cls.getClassLoader(),cls.getInterfaces(),new BusinessImplProxy(obj)); } } //测试类 public class DynamicProxy { public static void main(String[] args) throws Throwable { BusinessFooImpl bfoo = new BusinessFooImpl(); BusinessFoo bf = (BusinessFoo)BusinessImplProxy.factory(bfoo); bf.foo(); System.out.println(); BusinessBarImpl bbar = new BusinessBarImpl(); BusinessBar bb = (BusinessBar)BusinessImplProxy.factory(bbar); String message = bb.bar("Hello,World"); System.out.println(message); } }
相关文章推荐
- java自身的动态代理简单例子。
- JAVA动态代理实现aop的简单例子
- Java设计模式之静态代理和动态代理(简单例子)
- java动态代理--一个简单的例子
- java动态代理--一个简单的例子
- 简单理解java动态代理---卖票例子
- Android插件化开发基础之Java动态代理(proxy)机制的简单例子
- 关于在JAVA中如何实现简单的动态代理
- cglib动态代理简单的例子
- JAVA动态代理 和 Spring AOP 4种通知的简单实现
- 网摘-java静态代理和动态代理例子(jdk动态代理和cglib动态代理)
- Java动态代理之InvocationHandler最简单的入门教程
- 一个简单的例子模拟JDK动态代理
- Java动态代理分析及简单实例
- mybaits的Mapper动态代理的简单例子(定义类型别名,ResultMap类型的使用)
- 使用Java动态代理实现简单AOP
- java动态代理例子
- Java动态代理原理及其简单应用
- 动态规划简单例子(数塔问题)java
- JAVA AOP 动态代理 的例子