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 

  • 相关阅读:
    IntelliJ IDEA 2019.3 激活码
    TortoiseGit创建分支合并
    Lombok常用注解
    springboot项目打包发布流程
    liunx下部署jar包
    TortoiseGit配置SSH
    springboot单元测试 Failed to load ApplicationContext
    IDEA SpringBoot项目 Maven Reading Maven projects
    Spring的xml配置文件标签导入问题
    CentOS7 root用户、普通用户 vim与vi的切换
  • 原文地址:https://www.cnblogs.com/lkldeblog/p/10627691.html
Copyright © 2011-2022 走看看