All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.hutool.aop.proxy.ProxyFactory Maven / Gradle / Ivy

There is a newer version: 5.8.33
Show newest version
package cn.hutool.aop.proxy;

import cn.hutool.aop.aspects.Aspect;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.ServiceLoaderUtil;

import java.io.Serializable;

/**
 * 代理工厂
* 根据用户引入代理库的不同,产生不同的代理对象 * * @author looly */ public abstract class ProxyFactory implements Serializable { private static final long serialVersionUID = 1L; /** * 创建代理 * * @param 代理对象类型 * @param target 被代理对象 * @param aspectClass 切面实现类,自动实例化 * @return 代理对象 * @since 5.3.1 */ public T proxy(T target, Class aspectClass) { return proxy(target, ReflectUtil.newInstanceIfPossible(aspectClass)); } /** * 创建代理 * * @param 代理对象类型 * @param target 被代理对象 * @param aspect 切面实现 * @return 代理对象 */ public abstract T proxy(T target, Aspect aspect); /** * 根据用户引入Cglib与否自动创建代理对象 * * @param 切面对象类型 * @param target 目标对象 * @param aspectClass 切面对象类 * @return 代理对象 */ public static T createProxy(T target, Class aspectClass) { return createProxy(target, ReflectUtil.newInstance(aspectClass)); } /** * 根据用户引入Cglib与否自动创建代理对象 * * @param 切面对象类型 * @param target 被代理对象 * @param aspect 切面实现 * @return 代理对象 */ public static T createProxy(T target, Aspect aspect) { return create().proxy(target, aspect); } /** * 根据用户引入Cglib与否创建代理工厂 * * @return 代理工厂 */ public static ProxyFactory create() { return ServiceLoaderUtil.loadFirstAvailable(ProxyFactory.class); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy