AOP动态代理实例
来源:互联网 发布:java无限循环代码 编辑:程序博客网 时间:2024/06/07 07:51
AOP动态代理实例
package test.aop;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;interface Human{ void info(); void fly();}//被代理类class SuperMan implements Human{ @Override public void info() { System.out.println("我是超人!我怕谁!"); } @Override public void fly() { System.out.println("I believe I can fly!"); }}class HumanUtil{ public void method1(){ System.out.println("--------方法一-----------"); } public void method2(){ System.out.println("--------方法二--------------"); }}class MyInvocationHandler implements InvocationHandler{ //被代理类的对象声明 Object obj; public void setObject(Object obj){ this.obj = obj; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { HumanUtil h = new HumanUtil(); h.method1(); Object returnVal = method.invoke(obj, args); h.method2(); return returnVal; }}//动态的创建一个代理类的对象class MyProxy{ public static Object getProxyInstance(Object obj){ MyInvocationHandler handler = new MyInvocationHandler(); handler.setObject(obj); return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), handler); }}public class TestAOP { public static void main(String[] args) { //创建了一个被代理类的对象 SuperMan man = new SuperMan(); //返回一个代理类的对象 Object obj = MyProxy.getProxyInstance(man); Human hu = (Human)obj; //通过代理类的对象调用重写的抽象方法 hu.info(); System.out.println(); hu.fly(); }}
//结果如下--------方法一-----------我是超人!我怕谁!--------方法二----------------------方法一-----------I believe I can fly!--------方法二--------------
0 0
- AOP动态代理实例
- Spring -AOP -java静态代理和动态代理实例
- Aop 代理 动态代理
- AOP代理之动态代理
- AOP代理之动态代理
- 代理模式 动态代理 AOP
- AOP动态代理
- AOP之动态代理
- 动态代理&AOP
- Spring Aop 动态代理
- aop入门:动态代理
- AOP基础--动态代理
- Spring AOP动态代理
- Spring AOP 动态代理
- spring aop动态代理
- AOP动态代理
- AOP动态代理
- Spring(AOP动态代理)
- Python 栈和队列
- SKStoreProductViewController中的坑
- android webView工具类
- C++易错:(四)&&与&
- PyQt5的学习之路(二)
- AOP动态代理实例
- JDK的安装与配置
- Android客户端与服务器端交互 如何保持session
- OpenCV 3 最新模块一次看个够
- Hibernate 之单表映射
- TensorFlow安装入门从Ubuntu到Windows
- Android通知栏监听之NotificationListenerService
- swift 基本运算符
- 非阻塞connect