1、切面after切点,将目标方法执行返回值,开放给切点

This commit is contained in:
刘羽铖 2019-09-25 11:04:46 +08:00
parent 84875f0ff9
commit 1df8f968d0
2 changed files with 66 additions and 52 deletions

View File

@ -4,13 +4,14 @@ import java.lang.reflect.Method;
import cn.hutool.core.date.TimeInterval; import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.lang.Console; import cn.hutool.core.lang.Console;
import cn.hutool.core.util.StrUtil;
/** /**
* 通过日志打印方法的执行时间的切面 * 通过日志打印方法的执行时间的切面
* @author Looly * @author Looly
* *
*/ */
public class TimeIntervalAspect extends SimpleAspect{ public class TimeIntervalAspect extends SimpleAspect {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private TimeInterval interval = new TimeInterval(); private TimeInterval interval = new TimeInterval();
@ -23,7 +24,7 @@ public class TimeIntervalAspect extends SimpleAspect{
@Override @Override
public boolean after(Object target, Method method, Object[] args, Object returnVal) { public boolean after(Object target, Method method, Object[] args, Object returnVal) {
Console.log("Method [{}.{}] execute spend [{}]ms", target.getClass().getName(), method.getName(), interval.intervalMs()); Console.log("Method [{}.{}] execute spend [{}]ms return value [{}]", target.getClass().getName(), method.getName(), interval.intervalMs(), StrUtil.toString(returnVal));
return true; return true;
} }
} }

View File

@ -19,6 +19,7 @@ public class AopTest {
Animal cat = ProxyUtil.proxy(new Cat(), TimeIntervalAspect.class); Animal cat = ProxyUtil.proxy(new Cat(), TimeIntervalAspect.class);
String result = cat.eat(); String result = cat.eat();
Assert.assertEquals("猫吃鱼", result); Assert.assertEquals("猫吃鱼", result);
cat.seize();
} }
@Test @Test
@ -26,10 +27,13 @@ public class AopTest {
Dog dog = ProxyUtil.proxy(new Dog(), TimeIntervalAspect.class); Dog dog = ProxyUtil.proxy(new Dog(), TimeIntervalAspect.class);
String result = dog.eat(); String result = dog.eat();
Assert.assertEquals("狗吃肉", result); Assert.assertEquals("狗吃肉", result);
dog.seize();
} }
static interface Animal { interface Animal {
String eat(); String eat();
void seize();
} }
/** /**
@ -44,6 +48,11 @@ public class AopTest {
public String eat() { public String eat() {
return "猫吃鱼"; return "猫吃鱼";
} }
@Override
public void seize() {
System.out.println("抓了条鱼");
}
} }
/** /**
@ -56,5 +65,9 @@ public class AopTest {
public String eat() { public String eat() {
return "狗吃肉"; return "狗吃肉";
} }
public void seize() {
System.out.println("抓了只鸡");
}
} }
} }