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 

  • 相关阅读:
    mysql问题小结
    mysql批量执行sql文件
    VMware使用中常见问题
    mybaits中xml文件大于号和小于号的处理方法
    自调用匿名函数的三种写法
    Linux相关文章
    Linux常用命令
    不触发事件,vue子组件传值给父组件
    elementUi使用单选框,并且单击行的时候选中该条数据
    可以和正则表达式一起使用的4个字符串方法
  • 原文地址:https://www.cnblogs.com/lkldeblog/p/10627691.html
Copyright © 2011-2022 走看看