From 1df8f968d02df090843fbb29c48a9c1331010d17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=BE=BD=E9=93=96?= Date: Wed, 25 Sep 2019 11:04:46 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=88=87=E9=9D=A2after=E5=88=87?= =?UTF-8?q?=E7=82=B9=EF=BC=8C=E5=B0=86=E7=9B=AE=E6=A0=87=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E8=BF=94=E5=9B=9E=E5=80=BC=EF=BC=8C=E5=BC=80?= =?UTF-8?q?=E6=94=BE=E7=BB=99=E5=88=87=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aop/aspects/TimeIntervalAspect.java | 29 +++--- .../test/java/cn/hutool/aop/test/AopTest.java | 89 +++++++++++-------- 2 files changed, 66 insertions(+), 52 deletions(-) diff --git a/hutool-aop/src/main/java/cn/hutool/aop/aspects/TimeIntervalAspect.java b/hutool-aop/src/main/java/cn/hutool/aop/aspects/TimeIntervalAspect.java index df239984b..3c6fa66cb 100644 --- a/hutool-aop/src/main/java/cn/hutool/aop/aspects/TimeIntervalAspect.java +++ b/hutool-aop/src/main/java/cn/hutool/aop/aspects/TimeIntervalAspect.java @@ -4,26 +4,27 @@ import java.lang.reflect.Method; import cn.hutool.core.date.TimeInterval; import cn.hutool.core.lang.Console; +import cn.hutool.core.util.StrUtil; /** * 通过日志打印方法的执行时间的切面 * @author Looly * */ -public class TimeIntervalAspect extends SimpleAspect{ - private static final long serialVersionUID = 1L; +public class TimeIntervalAspect extends SimpleAspect { + private static final long serialVersionUID = 1L; - private TimeInterval interval = new TimeInterval(); + private TimeInterval interval = new TimeInterval(); - @Override - public boolean before(Object target, Method method, Object[] args) { - interval.start(); - return true; - } - - @Override - public boolean after(Object target, Method method, Object[] args, Object returnVal) { - Console.log("Method [{}.{}] execute spend [{}]ms", target.getClass().getName(), method.getName(), interval.intervalMs()); - return true; - } + @Override + public boolean before(Object target, Method method, Object[] args) { + interval.start(); + return true; + } + + @Override + public boolean after(Object target, Method method, Object[] args, Object returnVal) { + Console.log("Method [{}.{}] execute spend [{}]ms return value [{}]", target.getClass().getName(), method.getName(), interval.intervalMs(), StrUtil.toString(returnVal)); + return true; + } } diff --git a/hutool-aop/src/test/java/cn/hutool/aop/test/AopTest.java b/hutool-aop/src/test/java/cn/hutool/aop/test/AopTest.java index 31f12325a..6ca1b9800 100644 --- a/hutool-aop/src/test/java/cn/hutool/aop/test/AopTest.java +++ b/hutool-aop/src/test/java/cn/hutool/aop/test/AopTest.java @@ -14,47 +14,60 @@ import cn.hutool.aop.aspects.TimeIntervalAspect; */ public class AopTest { - @Test - public void aopTest() { - Animal cat = ProxyUtil.proxy(new Cat(), TimeIntervalAspect.class); - String result = cat.eat(); - Assert.assertEquals("猫吃鱼", result); - } + @Test + public void aopTest() { + Animal cat = ProxyUtil.proxy(new Cat(), TimeIntervalAspect.class); + String result = cat.eat(); + Assert.assertEquals("猫吃鱼", result); + cat.seize(); + } - @Test - public void aopByCglibTest() { - Dog dog = ProxyUtil.proxy(new Dog(), TimeIntervalAspect.class); - String result = dog.eat(); - Assert.assertEquals("狗吃肉", result); - } + @Test + public void aopByCglibTest() { + Dog dog = ProxyUtil.proxy(new Dog(), TimeIntervalAspect.class); + String result = dog.eat(); + Assert.assertEquals("狗吃肉", result); + dog.seize(); + } - static interface Animal { - String eat(); - } + interface Animal { + String eat(); - /** - * 有接口 - * - * @author looly - * - */ - static class Cat implements Animal { + void seize(); + } - @Override - public String eat() { - return "猫吃鱼"; - } - } + /** + * 有接口 + * + * @author looly + * + */ + static class Cat implements Animal { - /** - * 无接口 - * - * @author looly - * - */ - static class Dog { - public String eat() { - return "狗吃肉"; - } - } + @Override + public String eat() { + return "猫吃鱼"; + } + + @Override + public void seize() { + System.out.println("抓了条鱼"); + } + } + + /** + * 无接口 + * + * @author looly + * + */ + static class Dog { + public String eat() { + return "狗吃肉"; + } + + public void seize() { + System.out.println("抓了只鸡"); + } + } }