java aop实用小案例
来源:互联网 发布:闲鱼申请淘宝介入步骤 编辑:程序博客网 时间:2024/05/16 07:12
spring配置文件
<!-- Spring AOP config
(* com.evan.crm.service.*.*(..))中几个通配符的含义:
第一个 * —— 通配 任意返回值类型
第二个 * —— 通配 包com.evan.crm.service下的任意class
第三个 * —— 通配 包com.evan.crm.service下的任意class的任意方法 第四个 .. —— 通配 方法可以有0个或多个参数 -->
<!-- 性能拦截统计 -->
<bea id="methodTimeAdvice" class="com.yy.framework.interceptor.MethodTimeAdviceInterceptor" />
<aop:config>
<aop:advisor id="methodTimeLog" advice-ref="methodTimeAdvice" pointcut="execution(* *..service..*(..))" />
</aop:config>
package com.test;
import java.lang.reflect.Method;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.aop.AfterReturningAdvice;
import org.springframework.aop.MethodBeforeAdvice;
public class MethodTimeAdviceInterceptor implements MethodBeforeAdvice, AfterReturningAdvice {
private static final Logger logger=LoggerFactory.getLogger(MethodTimeAdviceInterceptor.class);
long tt = 0;
public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable {
tt = System.currentTimeMillis();
}
public void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable {
long lastTime = System.currentTimeMillis() - tt;
StringBuffer buf =
new StringBuffer("EXECUTE:(").append(arg1.getName()).append(") BEGIN=").append(tt).append(", END=").append(System.currentTimeMillis())
.append(", ELAPSE=").append(lastTime);
if (logger.isDebugEnabled()) {
logger.debug(buf.toString());
}
}
}
1:MethodBeforeAdvice before 在执行service方法之前,或者任意方法之前执行
2:AfterReturningAdvice afterReturning 在执行方法之后,或者任意方法之后执行
并且,MethodBeforeAdvice和AfterReturningAdvice,也可以单独拿来配置重写,至于这个就不在这多说了。
这个案例是做了一个性能统计,即方法执行的一个时间效率统计。spring 的 aop 有很多种方法,当然在这里也只是其中一个罢了。采用的一个动态代理机制
- java aop实用小案例
- java实用小知识
- Java 实用小方法
- java实用小程序
- java io小案例
- JAVA反射小案例
- 一些java小案例
- JAVA实用案例之图片水印开发
- Java实用类小练习
- Jquery实用小案例,适合初学者练习使用
- java小案例(1)
- JAVA TCP 编程小案例
- Java中数组小案例
- java 解析json小案例
- java线程和小案例
- Java操作Redis小案例
- #Java小案例 扑克牌小游戏
- java序列化小案例
- Spring MVC 项目搭建 -2- 添加service ,dao,junit
- MySql中DECLARE CONTINUE HANDLER FOR NOT FOUND 解释
- UI控件笔记(十三):UI之MVC
- dom4j解析xml
- iOS 十六进制颜色转成UIColor
- java aop实用小案例
- C++程序设计必知:常引用、常对象和对象的常成员
- JsonFX Unity3D 如何使用JsonFX
- 线程结果回调Runnable、Callable、Future、FutureTask
- Qt布局相关因素汇总
- initwithcoder initwithNib
- 数组------奇数偶数排序
- Session 初步(一) 之 Session 与 Cookie
- http-关于application/x-www-form-urlencoded等字符编码的解释说明