Spring AOP专题

1,什么是aop?

AOP 为 Aspect Oriented Programming 的缩写,翻译为面向切面编程,利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。通俗理解就是在不修改源代码的情况下,在主干功能里面添加新的功能。

2,aop里面的专业术语

(1)aspect:切面 一种标准代码/功能,分散在应用程序的多个位置,通常与实际的业务逻辑(例如,事务管理)不同。每个方面都专注于特定的跨领域功能。 由pointcut和advice组成

(2)advice:建议切面在何时以及如何进行增强处理

(3)JoinPoint:连接点就是一个方法

(4)PointCut:一切连接点的集合

(5)Target Object:被代理对象

(6)AOP proxy:由AOP框架创建的对象,使用的是JDK动态代理或CGLIB动态代理

(7)Weaving 将代理逻辑添加到对目标类的具体连接点上,并创建动态代理的过程

3,Advice的时机由哪几种?

(1)Before 前置通知,在连接点之前调用,如果抛出异常则不会流转到连接点

(2)after 后置通知,在连接点以后调用,不管连接点是否执行正常,异常都会执行的通知

(3)afterRunning 返回通知,在连接点调用正常后使用,异常不会执行

(4)afterThrowing 异常通知,在连接点执行发生异常时使用

(5)Around 环绕通知,连接点的执行前后可执行自定义代码

4,实现springAop的途径有哪些

(1)xml配置文件实现(2)注解实现

5,Spring AOP和AspectJ的区别

(1)Spring AOP是纯Java实现,而AspectJ是使用Java语言的扩展类实现

(2)Spring AOP无需单独编译过程,AspectJ需要专属编译器

(3)Spring AOP仅需运行时编织,AspectJ运行时编织不可用,仅仅支持编译时编织,编译后和加载时编织

(4)Spring AOP仅仅支持方法编织,AspectJ可编织字段,方法,构造函数,静态初始值,final类,方法等,更为强大。

(5)Spring AOP只能在spring管理的bean身上实现,而AspectJ可以在所有领域对象上实施

(6)Spring AOP仅支持方法切入点,AspectJ支持所有切入点

(7)Spring AOP代理是针对目标对象创建的,并应用于这些代理。AspectJ在应用执行之前将切面编织进代码中

(8)Spring AOP比AspectJ慢很多

(9)Spring AOP易学会,AspectJ更为复杂

6,Spring AOP创建代理方式

(1)JDK动态代理:首选方式,每当目标对象实现一个接口时,都使用JDK动态代理

(2)CGLib代理,如果目标对象未实现接口,则使用CGLib代理

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nathaniel333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值