AOP是什么?如何使用?项目中具体的体现?

AOP(Aspect-Oriented Programming,面向切面编程):能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。

功能:让关注点(事物处理、权限、日志)和业务代码分离。

Spring AOP就是基于动态代理的,如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候Spring AOP会使用Cglib 。

事物:逻辑上的一组操作,保证要么同时成功,要么同时失败(失败之后会回滚) 例子:A给B转账,

设计到两条sql语句,一个是A账户减100,另一个是B账户加100,这个过程卸在Service层,

所以在Service层都会加上事物。

public void transfer(A a, B b, double  money) {

    // 开启事物 (重复的代码)关注点代码

    调用dao代码:a-100;

    调用dao代码:b+100;

    // 关闭事物

}

AOP中注解的含义

@Aspect:切面。表示一个横切进业务的一个对象。它里面包含切入点(Pointcut)和Advice(通知)。

@Pointcut:切入点。表示需要切入的位置,比如某些类或者某些方法,也就是先定一个范围。

AOP通知:

1、前置通知@Before:在方法调用之前执行

2、后置通知@AfterReturning:在方法正常调用之后执行

3、环绕通知@Around:在方法调用之前和之后,都分别可以执行的通知

4、异常通知@AfterThrowing:如果在方法调用过程中发生异常,则通知

5、最终通知 @After:在方法调用之后执行,类似于finally

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值