java异常记录aop_[Java教程]spring aop对service层日志和异常的处理

[Java教程]spring aop对service层日志和异常的处理

0 2016-10-29 15:00:04

1.aop是什么

AOP是Aspect Oriented Programming的缩写,意思是面向切面编程,与OOP(Object Oriented Programming)面向对象编程对等,都是一种编程思想。

从OOP角度分析,我们关注业务的处理逻辑,是属于纵向的行为,从AOP角度分析,我们关注对象行为发生时的问题,是属于横向的行为。

2.AOP 作用:

2.1 监控函数的调用

2.2 捕获异常发生

实际应用在:事务、安全、日志等横切关注。

下面是aop打印service层的方法日志为例:各个注解很好理解,执行前执行后等

@Component

@Aspect

public class ApiServiceAspect {

private final Logger logger = Logger.getLogger(this.getClass());

/**

* 切面

*/

private final String POINT_CUT = "execution(* com.demo.service.*.*.*(..))";

@Pointcut(POINT_CUT)

private void pointcut(){}

@Before(value = POINT_CUT)

public void before(JoinPoint joinPoint) {

String className = joinPoint.getTarget().getClass().getName();

String methodName = joinPoint.getSignature().getName();

StringBuilder log = new StringBuilder();

log.append("before: ")

.append(className)

.append("@")

.append(methodName)

.append(" , params: ");

Object[] args = joinPoint.getArgs();

for (Object arg : args) {

log.append(JSONObject.toJSONString(arg) + ", ");

}

logger.info(log.toString());

}

@AfterReturning(value = "pointcut()", returning = "returnObj")

public void afterReturn(Object returnObj) {

String result = JSONObject.toJSONString(returnObj);

logger.info("afterReturning: "+result);

}

@AfterThrowing(value = POINT_CUT, throwing = "e")

public void afterThrowing(Throwable e) {

logger.error("afterThrowing: "+e.getMessage(), e);

}

@Around(value = "pointcut()")

public Object around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {

Long begin = System.currentTimeMillis();

StringBuilder log = new StringBuilder("around: ");

Object result = null;

try {

result = proceedingJoinPoint.proceed();

} catch (Exception e) {

logger.error(log + e.getMessage(), e);

}

Long end = System.currentTimeMillis();

log.append(" 执行时间: ")

.append(end-begin)

.append("ms");

return result;

}

}

3.配置文件

如果使用了spring mvc后,如果把放在application.

本文网址:http://www.shaoqun.com/a/258777.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

Spring

0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值