[TOC]
1. AOP简介
AOP是一种编程范式,它主要是为了将非功能模块与业务模块分离开来,让我们更好的管理这些非功能模块。
它的使用场景有:权限控制、日志打印、事务控制、缓存控制、异常处理
2. AOP使用
- 在类上注解 @Aspect
- 如果想在方法执行前做操作,那么注解@Before注解
- 如果想在方法执行后做操作,那么注解@After注解
五大Advice注解:
- @Before 方法执行前执行该切面方法
- @After 方法执行后执行该切面方法
- @AfterThrowing 方法抛出异常后执行该切面方法
- @AfterReturning 方法返回值后执行该切面方法
- @Around 环绕注解,集合前面四大注解
2.1 @Aspect
注解在类上,表明此类是一个面向切面的类,同时也要记得在类上注解
@Component
或者@Service
将此类交给Spring管理
2.2 @Poincut
用来注解在方法上,表明此方法为切面方法
常用表达式有:
1 | "@annotation(myLogger)") //只拦截有注解为@myLogger的方法 ( |
designators(指示器)常用的表达式
2.3 @Before
在方法执行下执行该切面方法,其用法与@Poincut类似
1 | //只拦截com.pibigstar包下,并且注解为myLogger的方法 |
2.4 @After
在方法执行后执行该切面方法
1 | //方法结束后 |
2.5 @AfterThrowing
当方法抛出异常后执行该切面方法
1 | ",throwing = "e") ( (myLogger) |
2.6 @AfterReturning
方法有返回值,打印出方法的返回值
1 | //方法有返回值 |
2.7 @Around
集合@Before,@After,@AfterReturning,@AfterThrowing 四大注解
1 | //集合前面四大注解 |