Spring AOP

介绍AOP
    面向切面编程, 一种思想, 对某一类事情的集中处理
        突然理解切面的含义啦~~比如说一个叫山海关的收费站~okkk无论你从哪里来,无论你要干什么,只要你经过这个收费站,你就要被拦截, -- 这就是一个切面~~~
    AOP 是思想; Spring AOP 是框架, 提供了一种对 AOP 思想的实现 ->IoC和DI

AOP 组成
    切面: 在程序中就是一个处理某方面具体问题的一个类, 类里面包含了很多方法, 这些方法就是切点和通知
    切点: 用来进行主动拦截的规则(配置)
    通知: 程序中被拦截请求触发的具体动作 -> 通知中要实现的具体业务代码
        前置通知: 执行目标方法之前执行
        后置通知: 执行目标方法之后执行
        异常通知: 执行目标方法,出现异常, 执行通知
        返回通知: 执行目标方法返回数据, 执行
        环绕通知: 执行目标方法周期范围内, 都可以执行的方法
    连接点: 可能会触发的 AOP 规则的所有点

Spring AOP_第1张图片

 

Spring AOP 的实现
    1) 添加 Spring AOP 框架支持
        
        org.springframework.boot
        spring-boot-starter-aop
        

    2) 定义 切面, 切点
         // 此类为一个切面
            @Aspect
         // 随框架的的启动而启动
            @Component
        // 定义切点 配置拦截规则
                @Pointcut("execution(* com.example.demo.controller.UserController.*(..))")
        // 空方法 起标识作用->下面通知方法 具体指哪一个切点
            public void pointcut(){}
    3) 定义 通知
        @Before("pointcut()")
            public void beforeAdvice(){
                    System.out.println("执行了前置通知");
                }
        @After("pointcut()")
            public void afterAdvice(){
                    System.out.println("执行了后置通知");
                }
        @Around("pointcut()")
            public Object arroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
                    System.out.println("执行环绕方法之前~~");
                    Object obj = null;
                    obj = joinPoint.proceed();
                    System.out.println("执行环绕方法之后~~");
                    return obj;
                }

Spring AOP_第2张图片

 Spring AOP_第3张图片Spring AOP_第4张图片

 

 Spring AOP_第5张图片

Spring AOP_第6张图片 

 

你可能感兴趣的:(spring,笔记,spring,java,junit)