前文介绍了Spring AOP的一些概念,本文主要介绍Spring AOP的使用方式:基于注解和xml配置
代理原则
Spring AOP 框架对 AOP 代理类的处理原则是:如果目标对象的实现类实现了接口,Spring AOP 将会采用 JDK 动态代理来生成 AOP 代理类;如果目标对象的实现类没有实现接口,Spring AOP 将会采用 CGLIB 来生成 AOP 代理类(可以强制使用CGLIB生成代理,设置proxy-target-class=true)
注解配置
注解配置AOP(使用 AspectJ 类库实现的),大致分为三步:
- 使用注解
@Aspect来定义一个切面,在切面中定义切入点@Pointcut,通知类型@Before,@AfterReturning,@After,@AfterThrowing,@Around - 开发需要被拦截的类(普通的业务逻辑)
- 将切面配置到xml中,也可以使用自动扫描Bean的方式,这样切面bean交由
Spring IOC容器管理。
注意:Spring只是使用了和 AspectJ 一样的注解,底层依然使用的是 Spring AOP,依然是在运行时动态生成代理
- 依赖jar包
要想使用@Aspect注解,需要引用 aspectJ 的jar包: aspectjweaver.jar和 aspectjrt.jar
|
|
- 定义接口
|
|
- 目标类
|
|
- 切面类`
|
|
@Aspect:意思是这个类为切面类@Componet:因为作为切面类需要Spring管理起来,所以在初始化时就需要将这个类初始化加入Spring IOC的管理;@Befoe:切入点的逻辑(Advice)execution…:切入点语法
- 启动注解
|
|
- 执行结果
|
|
xml配置
使用xml配置aop需要用到标签:<aop:config>
- 配置
|
|
- 执行结果
|
|