zoukankan      html  css  js  c++  java
  • springboot中的AOP开发

    三步:

    1.引入springboot-boot-start-aop jar包

    <!--springboot与aop集成jar包-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-aop</artifactId>
            </dependency>

    2.开发切面

    两个主要的注解:@Configuration ,让springboot框架做自动配置  

            @Aspect ,告知springboot这个类是一个切面类

    前置通知和后置通知的开发。

    @Configuration
    @Aspect
    public class MyAspect {
        //前置通知
        @Before("within(com.lkl.service.UserServiceImpl)")
        public void BeforeSearch(JoinPoint joinPoint){
            System.out.println("目标类:"+joinPoint.getTarget());
            System.out.println("方法名:"+joinPoint.getSignature().getName());
            System.out.println("方法参数:"+joinPoint.getArgs());
            System.out.println("=========这是为查询所有开发的前置通知========");
        }
        //后置通知
        @After("execution(* com.lkl.service.UserServiceImpl.*(..))")
        public void AfterTest(JoinPoint joinPoint){
            System.out.println("===========后置通知===========");
            System.out.println("目标类:"+joinPoint.getTarget());
            System.out.println("方法名:"+joinPoint.getSignature().getName());
            System.out.println("方法参数:"+joinPoint.getArgs());
        }
    }


    前置通知和后置通知类似,了解即可。主要掌握环绕通知

    环绕通知的开发

    @Configuration
    @Aspect
    public class MyAspect {
        
        @Around("execution(* com.lkl.service.UserServiceImpl.*(..))")
        public Object aroundTest(ProceedingJoinPoint proceedingJoinPoint){
            System.out.println("目标类:"+proceedingJoinPoint.getTarget());
            System.out.println("目标方法:"+proceedingJoinPoint.getSignature().getName());
            System.out.println("目标方法参数:"+proceedingJoinPoint.getArgs());
            System.out.println("==========进入环绕通知之前=========");
            Object proceed = null;
            try {
                proceed = proceedingJoinPoint.proceed();   //放行
                System.out.println("目标方法的返回值:"+proceed);
                System.out.println("========执行目标方法之后的操作========");
    
                return proceed;      //将目标方法执行的结果返回
    
            } catch (Throwable throwable) {
                System.out.println("==========异常通知=========");
                throwable.printStackTrace();
            }
            return null;
        }
    
    }

    3.注意事项

    1)前置通知和后置通知,自定义方法传递参数是:JoinPoint 

    2)环绕通知,传递参数为:ProceedingJoinPoint 

  • 相关阅读:
    简单的BMCP位图图片压缩算法
    163相册验证码图片的识别手记之二 识别
    认父亲的DbParameter!!
    文件同步精灵(初版)
    163相册验证码图片的识别手记之一 去除干扰
    C#中WebService里的回车符"\r"丢失问题
    PHP 杂谈《重构改善既有代码的设计》之二 对象之间搬移特性
    PHP5计划任务离线功能的原理
    (转)程序员疫苗:代码注入
    window7环境,不安装Oracle,使用PL/SQL Developer结合oracle精简客户端,管理Oracle数据库
  • 原文地址:https://www.cnblogs.com/lkldeblog/p/10627691.html
Copyright © 2011-2022 走看看