(1)使用@Aspect声明是一个切面
(2)使用@After,@Before,@Around 定义建言(advice),可以直接将拦截规则(切点PointCut)作为参数
(3)为了使切点复用,可使用@PointCut专门定义拦截规则,然后在@After,@Before,@Around的参数中调用
(4)其中符合条件的每一个被拦截处为连接点(JoinPoint)
注解式拦截能够很好的控制要拦截的粒度和获得更丰富的信息,Spring本身在事务处理(@Transcational)和数据缓存池(@Cacheable)等上面都使用了此种形式的拦截
示例:
添加Spring AOP支持及AspectJ依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.5</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.5</version>
</dependency>