1.导入依赖
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)