Class Builder

java.lang.Object
org.miaixz.bus.proxy.Builder

public final class Builder extends Object
代理工具类
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static Provider
    获取动态代理引擎
    static boolean
    是否Cglib代理对象
    static boolean
    是否为JDK代理对象
    static boolean
    isProxy(Object object)
    是否为代理对象,判断JDK代理或Cglib代理
    static <T> T
    newProxyInstance(ClassLoader classloader, InvocationHandler invocationHandler, Class<?>... interfaces)
    创建动态代理对象 动态代理对象的创建原理是: 假设创建的代理对象名为 $Proxy0 1、根据传入的interfaces动态生成一个类,实现interfaces中的接口 2、通过传入的classloder将刚生成的类加载到jvm中。即将$Proxy0类load 3、调用$Proxy0的$Proxy0(InvocationHandler)构造函数 创建$Proxy0的对象,并且用interfaces参数遍历其所有接口的方法,这些实现方法的实现本质上是通过反射调用被代理对象的方法 4、将$Proxy0的实例返回给客户端。 5、当调用代理类的相应方法时,相当于调用 InvocationHandler.invoke(Object, java.lang.reflect.Method, Object[]) 方法
    static <T> T
    newProxyInstance(InvocationHandler invocationHandler, Class<?>... interfaces)
    创建动态代理对象
    static <T> T
    proxy(T target, Class<? extends Aspect> aspectClass)
    使用切面代理对象
    static <T> T
    proxy(T target, Aspect aspect)
    使用切面代理对象

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • Builder

      public Builder()
  • Method Details

    • getEngine

      public static Provider getEngine()
      获取动态代理引擎
      Returns:
      Provider
    • proxy

      public static <T> T proxy(T target, Class<? extends Aspect> aspectClass)
      使用切面代理对象
      Type Parameters:
      T - 切面对象类型
      Parameters:
      target - 目标对象
      aspectClass - 切面对象类
      Returns:
      代理对象
    • proxy

      public static <T> T proxy(T target, Aspect aspect)
      使用切面代理对象
      Type Parameters:
      T - 被代理对象类型
      Parameters:
      target - 被代理对象
      aspect - 切面对象
      Returns:
      代理对象
    • newProxyInstance

      public static <T> T newProxyInstance(ClassLoader classloader, InvocationHandler invocationHandler, Class<?>... interfaces)
      创建动态代理对象 动态代理对象的创建原理是: 假设创建的代理对象名为 $Proxy0 1、根据传入的interfaces动态生成一个类,实现interfaces中的接口 2、通过传入的classloder将刚生成的类加载到jvm中。即将$Proxy0类load 3、调用$Proxy0的$Proxy0(InvocationHandler)构造函数 创建$Proxy0的对象,并且用interfaces参数遍历其所有接口的方法,这些实现方法的实现本质上是通过反射调用被代理对象的方法 4、将$Proxy0的实例返回给客户端。 5、当调用代理类的相应方法时,相当于调用 InvocationHandler.invoke(Object, java.lang.reflect.Method, Object[]) 方法
      Type Parameters:
      T - 被代理对象类型
      Parameters:
      classloader - 被代理类对应的ClassLoader
      invocationHandler - InvocationHandler ,被代理类通过实现此接口提供动态代理功能
      interfaces - 代理类中需要实现的被代理类的接口方法
      Returns:
      代理类
    • newProxyInstance

      public static <T> T newProxyInstance(InvocationHandler invocationHandler, Class<?>... interfaces)
      创建动态代理对象
      Type Parameters:
      T - 被代理对象类型
      Parameters:
      invocationHandler - InvocationHandler ,被代理类通过实现此接口提供动态代理功能
      interfaces - 代理类中需要实现的被代理类的接口方法
      Returns:
      代理类
    • isProxy

      public static boolean isProxy(Object object)
      是否为代理对象,判断JDK代理或Cglib代理
      Parameters:
      object - 被检查的对象
      Returns:
      是否为代理对象
    • isJdkProxy

      public static boolean isJdkProxy(Object object)
      是否为JDK代理对象
      Parameters:
      object - 被检查的对象
      Returns:
      是否为JDK代理对象
    • isCglibProxy

      public static boolean isCglibProxy(Object object)
      是否Cglib代理对象
      Parameters:
      object - 被检查的对象
      Returns:
      是否Cglib代理对象