我用几个方法注释了Java类:
@CustomAnnotation
public class MyService {
public List<MyObject> getMyObjects(){
...
}
public SomeObject getSomeObject(){
...
}
}我应该记录MyObject和SomeObject实例的字段值。
MyService对象获取的aspectj部件:
public void logg2(JoinPoint jp) {
Object target = jp.getTarget();}
target是包含方法的MyService类。
如何获取运行时MyService类中的方法返回的MyObject和SomeObject实例字段的值?
发布于 2011-10-16 16:50:59
@Around(value = "traceReturnedObjectsFields()")
public Object traceAnotherOne(ProceedingJoinPoint jp) throws Throwable {
Object res = null;
res = jp.proceed();
if (res == null)
return res;
Class<?> c1 = res.getClass();
Field[] fields = c1.getDeclaredFields();
AccessibleObject.setAccessible(fields, true);
for (Field field : fields) {
if (!Modifier.isStatic(field.getModifiers())) {
System.out.println(field + " = " + field.get(res));
}
}
return res;
}发布于 2011-10-16 00:06:41
Object target = jp.getTarget();
for (Class<?> superclass = target.getClass();
superclass != Object.class;
superclass = superclass.getSuperclass())
{
Field[] fields = superclass.getDeclaredFields();
AccessibleObject.setAccessible(fields, true);
for (Field field : fields)
{
if (!Modifier.isStatic(field.getModifiers()))
{
System.out.println(field + " = " + field.get(target));
}
}
}https://stackoverflow.com/questions/7778249
复制相似问题