spring实战笔记——面向切面的spring

DI有助于应用对象之间的解耦,而AOP可以实现横切关注点与它们所影响的对象之间的解耦。
散布于应用多处的功能被称为横切关注点。

spring对AOP的支持

Spring提供了4种类型的AOP支持:
1、基于代理的经典Spring AOP;
2、纯POJO切面;
3、@AspectJ注解驱动的切面;
4、注入式AspectJ切面
前三种都是SpringAOP实现的变体,SpringAOP构建在动态代理基础之上,因此Spring对AOP的支持局限于方法拦截。

编写切点

//execution:在方法执行时触发;*表示返回任意类型;..表示;使用任意参数
execution(* concert.Performance.perform(..))

使用注解创建切面

定义切面

使用@Aspect注解标注一个切面,使用@Pointcut注解能够在@AspectJ切面内定义可重用的切点。

注解通知
@After通知方法会在目标方法返回或者抛出异常后调用
@AfterReturning通知方法会在目标方法返回后调用
@AfterThrowing通知方法会在目标方法抛出异常后调用
@Around通知方法会在将目标方法封装起来
@Before通知方法会在目标方法调用之前执行

在javaconfig中启用AspectJ注解的自动代理

如果不启用自动代理功能,定义的切面只会是一个普通的bean,spring不会把它当做切面来处理。

//启用AspectJ自动代理
@EnableAspectJAutoProxy

在XML中启用AspectJ自动代理

<!--启用AspectJ自动代理-->
<aop:aspectj-autoproxy />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值