美文网首页
注解与动态代理

注解与动态代理

作者: 凉希凉兮 | 来源:发表于2017-06-12 19:18 被阅读0次
图片.png 图片.png

自定义注解

开发步骤

  1. 创建一个@interface
  2. String value();抽象方法用以接收数据
  3. 使用元注解,描述自定义注解
  4. @Target指定注解可以加在哪里
    • ElementType.TYPE:可在类和接口上面
    • ElementType.METHOD:可方法上
    • ElementType.FIELD:可在属性
  5. @Retention指定注解在什么时候有用
    • RetentionPolicy.RUNTIME:注解保留到运行时
    • RetentionPolicy.ClASS:注解保留到Class文件中
    • RetentionPolicy.SOURCE:注解保留到java编译时期
  6. @Inherited可以被继承

jdk动态代理

  1. 被代理类必须实现一个接口,任意接口
    public class Bus implements Runnable{};
  1. 创建一个类实现InvocationHandler,该类用来动态代理对象进行方法的增强
public class TimeInvocation implements InvocationHandler{
    private Object target;//被代理对象
    public TimeInvocation(Object target){
        this.target=target;
    }
}
  1. 在invoke()方法中调用被代理对象的方法,并且添加增强的代码
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        // TODO Auto-generated method stub
        long time1=System.currentTimeMillis();
        //调用被代理对象的方法
        method.invoke(target, args);
        long time2=System.currentTimeMillis();
        System.out.println(time2-time1);
        return null;
    }
  1. 通过Proxy.newProxyInstance(ClasLoader, Class, InvovationHandler)创建代理类对象

  2. 调用代理对象的方法

        TimeInvocation time=new TimeInvocation(s);
        Class<?> clazz=s.getClass();
        Runnable s1= (Runnable)Proxy.newProxyInstance(clazz.getClassLoader(), clazz.getInterfaces(), time);
        s1.run();

相关文章

  • Java 代理

    静态代理 动态代理 动态代理, 日志切片使用反射获得方法 动态代理, 自定义注解(对注解的方法,使用动态代理添加切...

  • Java基础:反射

    反射注解动态代理相关阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 ...

  • retrofir

    注解 + 动态代理+反射+ okhttp

  • 注解与动态代理

    自定义注解 开发步骤 创建一个@interface String value();抽象方法用以接收数据 使用元注解...

  • 注解反射以及动态代理

    注解与反射以及动态代理 注解 注解的定义 Annotation(注解)就是Java提供了一种元程序中的元素关联任何...

  • web25 动态代理 注解

    注解有特殊功能都是runtime级别的 注解三步:定义,使用,解析 动态代理也可增强,但一般用于拦截 动态代理必须...

  • spring aop 汇总

    静态代理、动态代理和cglib代理 aop 使用 Spring AOP - 注解方式使用介绍spring aop ...

  • 动态代理,注解

    代理模式 什么是代理模式及其作用Proxy Pattern(即:代理模式),23种常用的面向对象软件的设计模式之一...

  • JDK1.8里Method.invoke()的实现原理

    简介 上一篇文章[java注解研究]提到注解最终通过生成动态代理实现类方式来调用,而动态代理实际就是通过反射来调用...

  • Java自定义注解实现Redis自动缓存

    自定义注解+AOP+范型方法实现Redis自动缓存 相关文章:Java自定义注解动态代理与AOPJava范型 在实...

网友评论

      本文标题:注解与动态代理

      本文链接:https://www.haomeiwen.com/subject/qwfrqxtx.html