spring AOP计算service运行时间

/**
 * 
 */
package com.dtm.log;


import java.net.InetAddress;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
import com.dtm.model.Sys_User;
import com.opensymphony.xwork2.ActionContext;


/**
 * * AOP注解方法实现日志管理 利用spring AOP 切面技术记录日志 定义切面类(这个是切面类和切入点整合在一起的),这种情况是共享切入点情况;
 * 
 * @author jianghong
 * 
 * @createDate 2014年7月12日 上午10:24:46
 * 
 * @file LogAopAction.java
 * 
 * @pakage com.dtm.log
 * 
 * @email jiangjianhua123@qq.com
 * 
 * @version 0.1
 * 
 */
@Aspect
// 该注解标示该类为切面类
@Component
public class LogAopAction {


@Around("execution(* com.dtm.*.service.impl.*.* (..))")
public Object logAll(ProceedingJoinPoint point) {
Object result = null;
// 执行方法名
String methodName = point.getSignature().getName();
String className = point.getTarget().getClass().getSimpleName();
String user = null;
Long start = 0L;
Long end = 0L;
String ip = null;
// 当前用户
try {
// 执行方法所消耗的时间
start = System.currentTimeMillis();
result = point.proceed();
end = System.currentTimeMillis();
// ip
ip = InetAddress.getLocalHost().getHostAddress();
// 登录名
Sys_User sys_User = (Sys_User) ActionContext.getContext().getSession().get("user");
user = sys_User.getName();
// System.out.println("Username:" +user);
} catch (Throwable e) {
// e.printStackTrace();
}
System.err.println("消耗时间:"+(end-start)+"  ip:"+ip+"  methodName:"+methodName+"  className:"+className+" user:"+user);
return result;
}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring AOP的运行时序图可以分为以下几个步骤: 1. 首先,在Spring的配置文件中声明激活自动扫描组件功能和自动代理功能,以启用AOP的注解方式。 2. 接下来,Spring会扫描被注解标记的类,找到所有的切面类和切点方法。切面类定义了需要在目标方法执行前、后、或异常时执行的通知(Advice)逻辑。 3. 当目标对象中的被切点方法被调用时,AOP代理会拦截这个方法的执行,并根据切面类中定义的通知类型,决定在何时执行通知逻辑。通知可以是在方法执行前、后、异常退出时、正常返回时等等。 4. 在执行通知逻辑时,AOP代理会将切面类中定义的通知逻辑插入到目标方法的执行流程中。这可以通过动态代理、字节码增强等技术来实现。 5. 最后,目标方法的执行会根据切面类中定义的通知逻辑进行相应的处理,例如打印日志、处理异常、修改方法的返回值等。 总之,Spring AOP运行时序图展示了在使用注解方式配置AOP时,Spring框架是如何在目标方法的执行过程中插入切面类中定义的通知逻辑的。通过这种方式,我们可以实现对目标方法的增强和控制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [一步一步手绘Spring AOP运行时序图(Spring AOP 源码分析)](https://blog.csdn.net/weixin_38024782/article/details/109007161)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [一步一步手绘Spring AOP运行时序图](https://blog.csdn.net/qq_39609388/article/details/102716316)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值