发表于: 2018-05-20 22:53:25
1 1194
今天完成的事情:完成aop的实现类
controller的:
public class TimeController {
// 日志
private static Logger logger = LoggerFactory.getLogger(TimeController.class);
/**
* @Description: 定义切入点
* @Param: timer
* @return: void
* @Explain: com.jnshu.controller.*Controller*.* 切入所有controller包下类名包含Controller的类的所有方法
*/
@Pointcut(value = "execution(* com.mvc.controller.*Controller*.*(..))")
private void handlerTimer(){}
/**
* @Description: 环绕通知
* @Param: controllerLogTimer
* @return: java.lang.Object
* @Explain: handlerTimer() 代表使用 handlerTimer()的切点
*/
@Around(value = "handlerTimer()")
public Object controllerLogTimer(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
// 创建性能监控信息类
MonitorTime monitorTime = new MonitorTime();
// 获取目标类名
String clazzName = proceedingJoinPoint.getTarget().getClass().getName();
// 获取目标方法名
String methodName = proceedingJoinPoint.getSignature().getName();
// 记录目标类名
monitorTime.setClassName(clazzName);
// 记录目标方法名
monitorTime.setMethodName(methodName);
// 记录开始时间
monitorTime.setLogTime(new Date());
// 计时并调用目标函数
logger.debug("====Controller切面开始====");
// System.currentTimeMillis() 返回当前时间,单位毫秒ms
long start = System.currentTimeMillis();
// 执行代理类
Object result = proceedingJoinPoint.proceed();
long time = System.currentTimeMillis() -start;
monitorTime.setComsumeTime(time);
logger.info( "性能日志 Controller类 " + "响应时间: " + monitorTime.getComsumeTime() + "ms " + "执行信息: 执行 " + monitorTime.getClassName()+" 中方法 "+monitorTime.getMethodName() + " 执行时间: " + monitorTime.getLogTime() );
return result;
}
}
service的:
@Aspect
public class TimeUserService {
private static Logger logger = LoggerFactory.getLogger(TimeUserService.class);
// db接口测试
@Pointcut("execution(* com.mvc.service.PersonService.*(..))")
private void userServiceTimer(){}
/**
* @Description: UserService 接口环绕通知
* @Param: dbLogTimer
* @return: java.lang.Object
*/
@Around(value = "userServiceTimer()")
public Object dbLogTimer (ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
// 创建性能监控信息类
MonitorTime monitorTime = new MonitorTime();
// 获取目标类名
String clazzName = proceedingJoinPoint.getTarget().getClass().getName();
// 获取目标方法名
String methodName = proceedingJoinPoint.getSignature().getName();
// 记录目标类名
monitorTime.setClassName(clazzName);
// 记录目标方法名
monitorTime.setMethodName(methodName);
// 记录开始时间
monitorTime.setLogTime(new Date());
// 计时并调用目标函数
logger.debug("=== UserService接口切面开始 ===");
// 毫秒为单位的当前时间
long start = System.currentTimeMillis();
Object result = proceedingJoinPoint.proceed();
long time = System.currentTimeMillis() -start;
monitorTime.setComsumeTime(time);
logger.info( "性能日志 DB类 " + "响应时间: " + monitorTime.getComsumeTime() + "ms " + "执行信息: 执行 " + monitorTime.getClassName()+" 中方法 "+monitorTime.getMethodName() + " 执行时间: " + monitorTime.getLogTime() );
return result;
}
}
明天计划的事情:(跑通日志过滤,完成任务三)
遇到的问题:(遇到什么困难,怎么解决的)
收获:(通过今天的学习,学到了什么知识)
最后,劳烦师兄批阅
评论