通过@Aspect进行处理逻辑

1、打印请求的日志,以及异常日志(入库、保存)

    //为项目中的rest方法定义一个切入点
    @Pointcut("execution(* com.curtain.*..*.rest.*.*(..))")
	public void rest(){};

	@Before("rest()")
	public void before(){
		System.out.println("开始执行");
	}

	@After("rest()")
	public void after(){
		System.out.println("结束执行");
	}


    //对某方法进行环绕通知
    @Around("rest()")
	public void around(ProceedingJoinPoint pjp){
		MethodSignature signature = (MethodSignature) pjp.getSignature();
		Method method = signature.getMethod();
		if (method.getDeclaringClass().isInterface()) {//判断是否是接口方法
			try {
				method = pjp
						.getTarget()
						.getClass()
						.getDeclaredMethod(signature.getName(),
								method.getParameterTypes());
			} catch (final SecurityException exception) {
			} catch (final NoSuchMethodException exception) {
			}
		}
		Object[] args = pjp.getArgs();//获取对应方法的参数

		try {
			Object result = pjp.proceed();// 执行该方法
			String clz = method.getDeclaringClass().getName();//类名
			String methodInfo = method.toGenericString();//方法名
			String desc = "";
			String content = "";
			String type = "";
			ActionLog action = AnnotationUtils.findAnnotation(method,
					ActionLog.class);//方法名上对应的注解
			if (action != null) {
				desc = action.description();
				content = action.content();
				type = action.type();
			}
			List<Object> cells = new ArrayList<Object> ();
			cells.add(type);
			cells.add(content);
			cells.add(desc);
			cells.add(clz);
			cells.add(methodInfo);
			cells.add(StringUtils.asString(Arrays.asList(args)));
            cells.add(isSuccess(result));
		    cells.add(StringUtils.asString(getResult(result)));//对方法结果进行处理
			System.out.println(cells);
		} catch (Throwable e) {
			e.printStackTrace();
		}

2、事物管理

转载于:https://my.oschina.net/u/2472104/blog/732925

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值