public class ProxyGenerator extends Object
| 限定符和类型 | 字段和说明 |
|---|---|
protected Engine |
engine |
protected static Log |
log |
protected boolean |
printGeneratedClassToConsole |
protected Template |
template |
| 构造器和说明 |
|---|
ProxyGenerator() |
| 限定符和类型 | 方法和说明 |
|---|---|
protected List<Class<?>> |
copyInterceptors(List<Class<?>> methodUpperInters) |
ProxyClass |
generate(Class<?> target) |
protected List<Class<?>> |
getMethodUpperInterceptors(ProxyClass proxyClass)
获取 method 上层的拦截器,也即获取 global、class 这两层拦截器
注意:global 层拦截器已结合 class 层 @Clear 注解处理过
|
protected String |
getReturnType(Method method)
方法返回值为 int[] 时 method.getReturnType().getName() 返回值为: [I
需要识别并转化
|
protected String |
getTargetName(Class<?> target)
支持对 static 类的代理
|
protected String |
getTargetTypeVars(TypeVariable[] typeVars)
获取父类泛型变量
相对于 getTypeVars(...)
|
protected String |
getThrows(Method method)
获取方法抛出的异常
|
protected String |
getTypeVars(TypeVariable[] typeVars)
获取子类泛型变量,也可用于获取方法泛型变量
|
protected boolean |
hasInterceptor(List<Class<?>> methodUpperInters,
ProxyClass proxyClass,
Method method)
当前 method 是否存在有效拦截器
1:如果存在 method 级拦截器,则 return true
2:否则结合 method 级的 @Clear 考察 global、class 两层拦截器的留存
global、class 两层拦截器已作为参数 methodUpperInters 被传入
methodUpperInters 中的拦截器已结合 class 级 @Clear 处理过
|
protected boolean |
isSkipMethod(Method method)
跳过不能代理的方法
1:非 public
2:final、static、abstract
3:方法名为:toString、hashCode、equals
|
protected void |
removeInterceptor(List<Class<?>> target,
Class<?>[] clearInters) |
void |
setPrintGeneratedClassToConsole(boolean printGeneratedClassToConsole)
配置打印生成类到控制台
|
void |
setProxyClassTemplate(String proxyClassTemplate) |
protected static final Log log
protected Engine engine
protected Template template
protected boolean printGeneratedClassToConsole
public ProxyClass generate(Class<?> target)
protected String getReturnType(Method method)
protected String getTypeVars(TypeVariable[] typeVars)
protected String getTargetTypeVars(TypeVariable[] typeVars)
protected boolean isSkipMethod(Method method)
protected List<Class<?>> getMethodUpperInterceptors(ProxyClass proxyClass)
protected boolean hasInterceptor(List<Class<?>> methodUpperInters, ProxyClass proxyClass, Method method)
public void setPrintGeneratedClassToConsole(boolean printGeneratedClassToConsole)
public void setProxyClassTemplate(String proxyClassTemplate)
Copyright © 2022. All rights reserved.