• Spring的AOP基于AspectJ的注解方式开发3


    上上偏博客介绍了@Aspect,@Before

    上篇博客介绍了spring的AOP开发的注解通知类型:@Before,@AfterThrowing,@After,@AfterReturning,@Around

    也介绍了JoinPoint和ProceedingJoinPoint的区别

    这篇博客讲@PointCut的使用,切入点注解----转载自https://www.cnblogs.com/ltfxy/p/9885742.html

    这种方法便于维护管理

    /**
     * 切面类:注解的切面类
     */
    @Aspect
    public class MyAspectAnno {
        //切入点的注解
        @Pointcut(value="execution(* com.itheima.spring.demo1.OrderDao.find(..))")
        private void pointcut1(){}
        
        @Pointcut(value="execution(* com.itheima.spring.demo1.OrderDao.save(..))")
        private void pointcut2(){}
        
        @Pointcut(value="execution(* com.itheima.spring.demo1.OrderDao.update(..))")
        private void pointcut3(){}
        
        @Pointcut(value="execution(* com.itheima.spring.demo1.OrderDao.delete(..))")
        private void pointcut4(){}
        
        //前置通知
        @Before(value="MyAspectAnno.pointcut2()")
        public void before(){
           System.out.println("前置通知======");
       }
      //后置通知
        @AfterReturning(value="MyAspectAnno.pointcut4()", returning="result")
        public void afterReturning(Object result){
            System.out.println("后置通知====="+result);
        }
     //环绕通知
        @Around(value="MyAspectAnno.pointcut3()")
        public Object around(ProceedingJoinPoint joinPoint) throws Throwable{
            System.out.println("环绕前增强=====");
            Object obj = joinPoint.proceed();
            System.out.println("环绕后增强=====");
            return obj;
        }
        //异常抛出通知
        @AfterThrowing(value="MyAspectAnno.pointcut1()" , throwing="e")
        public void find(Throwable e ){
           System.out.println("异常抛出通知======"+e.getMessage());
       }
    
      // 最终通知:
        @After(value="MyAspectAnno.pointcut1()")
        public void after( ){
           System.out.println("最终通知======");
       }
        
    
    
    }

    补充:

    当使用接口的时候,spring会自动采用JDK的动态代理

    不使用接口的话,spring会自动采用Cglib的动态代理

  • 相关阅读:
    (转)Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id)等
    (转)Objective-C语言--属性和实例变量
    (转)iOS 属性字符串
    (转)git clone: error: RPC failed; result=18, HTTP code = 200 解决办法
    iOS设置UINavigationBar 的样式
    Install kubernetes without yum
    kubernetes install for centos
    Deploying docker registry v2
    build docker deivcemapper
    docker local registry server gave HTTP response to HTTPS client
  • 原文地址:https://www.cnblogs.com/zengcongcong/p/10364956.html
Copyright © 2020-2023  润新知