SpringAop入门

111 阅读1分钟

1.导入依赖

image.png

2.需要被增强的方法

@RestController
@RequestMapping("aopTest")
public class singer {
    private String name = "张三";

    @RequestMapping("song")
    public void song(){
        System.out.println(name+"在唱歌。。。");
    }
}

3.切面

@Aspect
@Component
public class aspect {

    @Pointcut("execution(* com.example.springdemo.controller.singer.song(..))")
    void song(){}

    @Before("song()")
    public void light(){
        System.out.println("开灯");
    }
    @After("song()")
    public void end(){
        System.out.println("唱完结束了");
    }
}

4.增强类型

前置通知:在我们执行目标方法之前运行( @Before

后置通知:在我们目标方法运行结束之后,不管有没有异常( @After

返回通知:在我们的目标方法正常返回值后运行( @AfterReturning

异常通知:在我们的目标方法出现异常后运行( @AfterThrowing

环绕通知:目标方法的调用由环绕通知决定,即你可以决定是否调用目标方法,joinPoint.procced()就是执行目标方法的代码 。环绕通知可以控制返回对象( @Around)