private static ClassPool pool = ClassPool.getDefault();
public static void log(JoinPoint point) throws TException, NotFoundException {
if (point != null) {
StringBuilder sb = new StringBuilder();
MethodSignature ms = (MethodSignature) point.getSignature();
CtClass cc = pool.get(point.getTarget().getClass().getName());
sb.append("类名:" + cc.getName());
CtMethod cm = cc.getDeclaredMethod(ms.getName());
sb.append(", 方法名:" + cm.getName());
MethodInfo mi = cm.getMethodInfo();
CodeAttribute ca = mi.getCodeAttribute();
LocalVariableAttribute attr = (LocalVariableAttribute) ca
.getAttribute(LocalVariableAttribute.tag);
String[] params = new String[cm.getParameterTypes().length];
int pos = Modifier.isStatic(cm.getModifiers()) ? 0 : 1;
int index = 0;
for (int i = 0; i < params.length; i++) {
index = i + pos;
params[i] = attr.variableName(index);
// System.out.println(attr.descriptor(index));
}
Object[] args = point.getArgs();
if (params.length > 0) {
sb.append(", 参数列表 [");
for (int i = 0; i < params.length; i++) {
if (i != 0)
sb.append(",");
sb.append(params[i] + ": " + args[i]);
}
sb.append("]");
}
System.out.println(sb.toString());
}
}
用AOP实现LOG的场合用
分享到:
相关推荐
生成额外的信息(运行时非必须信息)会消耗内存并且有可能公布敏感信息(某些方法参数比如password,JDK文档里这么说的),并且确实很多信息javac并不会为
java 通过反射获取类上注解,方法上注解,注解里的值及方法参数,项目为maven项目。导入时记得选择maven项目
asp.net WebForm , 通过反射绑定实体对象数据和获得页面数据,
在这项研究中,对通过放置在前一行顶部和后一行底部之间的前面的固定反射镜增强的太阳场进行了理论分析。 已经开发出一种分析模型,并将其用于估算太阳辐射。 该分析模型基于各向异性天空模型,假设收集器和反射器行...
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数...
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和...
首先,根据谱反演原理,详细推导了地层反射系数序列的计算公式以及反演所需的目标函数,并根据探地雷达波的特点,将计算公式和目标函数中的反射系数序列的奇偶分量用几何和电性参数替代,从而确立了地层几何和电性...
泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?...在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息。
matlab模拟光栅,设置光栅基本参数,得到反射谱。
反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类、结构、委托、接口和枚举等)的成员和成员的信息。有了反射,即可对每一个类型了如指掌。另外我还可以直接创建对象,即使这个...
该方法可以利用beanUtils工具生成的两个Object对象,通过参数传入,判断两个对象那些字段发生变化,方便日志记录。
NULL 博文链接:https://topbox163.iteye.com/blog/671073
第三:通过clazz获得构造函数:Constructors cons=clazz.getDeclaraedConstructors(Class[]null);//调 用默认的构造函数 第四:然后通过构造函数构造对象:Car car=(Car)cons.newInstance();//获取类的默认构造函数...
反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类、结构、委托、接口和枚举等)的成员和成员的信息。有了反射,即可对每一个类型了如指掌。另外我还可以直接创建对象,即使这个...
“反射(Reflection)是.NET中的一个重要技术,通过反射,可以在运行时获得某个类型的各种信息,包括方法、属性、事件及构造函数等,还可以获得每个成员的名称、限定符和参数等信息。可以说有了反射,即可对每个类型...
利用反射技术,根据类的完全限定名获得该类的实例对象。包括无参数或带参数的实例化。感兴趣的可以看看!
通过对五参数半经验双向反射分布函数(BRDF)模型进行修改,并吸收其它模型的优点,提出了一个六参数BRDF模型,该模型形式更简单,拟合效果更好,并且模型满足了能量守恒和互易性,使该模型更趋于实用化。...
java反射的工具类,可以获得方法的参数名称
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数...