首页 > 学院 > 开发设计 > 正文

Spring 的几种AOP通知

2019-11-10 19:57:59
字体:
来源:转载
供稿:网友

 

package com.carry.sPRing.beans.aop;

 

import java.awt.List;

import java.util.Arrays;

 

import org.aspectj.lang.JoinPoint;

import org.aspectj.lang.annotation.After;

import org.aspectj.lang.annotation.AfterReturning;

import org.aspectj.lang.annotation.AfterThrowing;

import org.aspectj.lang.annotation.Aspect;

import org.aspectj.lang.annotation.Before;

import org.springframework.stereotype.Component;

 

 

@Component  //是个bean

@Aspect           //是个切面

public classLogging {

       

        /**

         * 在包 com.carry.spring.beans.aop.ArithmeticInterface接口的每一个实现类的每一个方法之前打印一句日志

         *

         * */

       

        @Before("execution(public intcom.carry.spring.beans.aop.ArithmeticInterface.*(..))")

        public void beforeMethod(JoinPoint joinpoint){

                StringmethodName=joinpoint.getSignature().getName();    //得到当前方法的名字 

                Object[] args=joinpoint.getArgs();                        //得到方法的参数

                System.out.println("The Method:"+methodName+" begin "+Arrays.asList(args));

        }

       

       

        /**

         * 在包 com.carry.spring.beans.aop.ArithmeticInterface接口的每一个实现类的每一个方法之后打印一句日志,无论是否异常出错

         *

         * */

       

        @After("execution(public intcom.carry.spring.beans.aop.ArithmeticInterface.*(..))")

        public void afterMethod(){

               

                System.out.println("The Method end");

        }

 

/**

 * 返回通知,在方法正常结束后执行的代码,有异常不显示

 * 可以访问方法的返回值

 *

 * */

       

        @AfterReturning(value="execution(public intcom.carry.spring.beans.aop.ArithmeticInterface.*(..))",

                        returning="res")

        public void returnMethod(JoinPoint joinPoint,Objectres){

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

                System.out.println("The Method returnMethod"+".."+mathodName+".."+res);

        }

        /**

         * 异常通知

         *

         *

         * */

               

                @AfterThrowing(value="execution(public intcom.carry.spring.beans.aop.ArithmeticInterface.*(..))",

                                throwing="thr")

                publicvoid returnMethod(JoinPoint joinPoint,Exception thr){

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

                        System.out.println("The Method returnMethod"+".."+mathodName+".."+thr);

                }

       

}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表