• Spring AOP(2)使用AspectJ注解


     

     

     

     1.使用maven引入依赖:

        <dependency>
          <groupId>aopalliance</groupId>
          <artifactId>aopalliance</artifactId>
          <version>1.0</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-aop</artifactId>
          <version>4.2.4.RELEASE</version>
        </dependency>
    
        <dependency>
          <groupId>org.aspectj</groupId>
          <artifactId>aspectjweaver</artifactId>
          <version>1.8.9</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-aspects</artifactId>
          <version>4.2.4.RELEASE</version>
        </dependency>

    2.编写切面类:

    /**
     * 切面类
     */
    @Aspect       //定义切面
    public class MyAspectAnno {
    
        @Before(value="myPointcut1()")
        public void before(JoinPoint joinPoint){
            System.out.println("前置通知=================="+joinPoint);
        }
    
        @AfterReturning(value="myPointcut2()",returning = "result")
        public void afterReturing(Object result){
            System.out.println("后置通知=================="+result);
        }
    
        @Around(value="myPointcut3()")
        public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
            System.out.println("环绕前通知================");
            Object obj = joinPoint.proceed(); // 执行目标方法
            System.out.println("环绕后通知================");
            return obj;
        }
    
        @AfterThrowing(value="myPointcut4()",throwing = "e")
        public void afterThrowing(Throwable e){
            System.out.println("异常抛出通知=============="+e.getMessage());
        }
    
        @After(value="myPointcut5()")
        public void after(){
            System.out.println("最终通知==================");
        }
    
    
        @Pointcut(value="execution(* com.imooc.aspectJ.demo1.ProductDao.save(..))")       //给切面命名   <!-- * 表示所有的修饰符 如:public,private等-->
    private void myPointcut1(){} @Pointcut(value="execution(* com.imooc.aspectJ.demo1.ProductDao.update(..))") private void myPointcut2(){} @Pointcut(value="execution(* com.imooc.aspectJ.demo1.ProductDao.delete(..))") private void myPointcut3(){} @Pointcut(value="execution(* com.imooc.aspectJ.demo1.ProductDao.findOne(..))") private void myPointcut4(){} @Pointcut(value="execution(* com.imooc.aspectJ.demo1.ProductDao.findAll(..))") private void myPointcut5(){} }
    <!-- * 表示所有的修饰符 如:public,private等-->
  • 相关阅读:
    git版本控制工具的使用(1)。
    python ui学习过程,使用pyqt5实现
    python下使用opencv拍照
    python的数字图像处理学习(3)
    python的数字图像处理学习(2)
    python的数字图像处理学习(1)
    tensorflow下识别手写数字基于MLP网络
    使用tensorflow下的GPU加速神经网络训练过程
    LSTM长短期记忆神经网络模型简介
    RNN模型(递归神经网络)简介
  • 原文地址:https://www.cnblogs.com/shouyaya/p/12555245.html
Copyright © 2020-2023  润新知