说说你对AOP的理解?

说说你对AOP的理解?

AOP又叫做面向切面编程。它是解耦而生的,解耦是程序员编码开发过程中一直追求的境界,AOP在业务的隔离上,做到了绝对的解耦,在这里面有几个核心的概念。

1、切面(Aspect):指关注点模块化,这个关注点可能会横切多个对象。事务管理是企业级java应用中有关横切关注点的列子。在Spring AOP中,切面可以使用通过类基于模型的方式或者在普通类中以@Aspect注解来实现。

2、连接点:在程序执行过程中某个特定的点,例如某个方法调用的时间点或者处理异常的时间点。在Spring AOP中,一个连接点总是代表一个方法的执行。

3、通知(Advice):在切面的某个特定的连接点上执行的动作。通知有多种类型,包括“around”“before”“after”等等。许多AOP框架,包括Spring在内,都是以拦截器做通知模型的,并维护着一个以连接点为中心的拦截器链。

4、切点(Pointcut):匹配连接点的断言。通知和切点表达式相关联,并在满足这个切点的连接点上运行(例如,当执行某个特定名称的方法时)。切点表达式如何和连接点匹配时AOP的核心:Spring默认使用AspectJ切点语义。

5、引入:声明额外的方法或者某个类型的字段。Spring允许引入新的接口到任何被通知的对象上。例如,可以使用引入来使bean实现IsModified接口,以便简化缓存机制。

6、目标对象:被一个或者多个切面所通知的对象。也被称作被通知对象。既然Spring AOP是通过运行时代理实现的,那么这个对象永远是一个被代理对象。

7、AOP代理:AOP框架创建的对象,用来实现切面契约,在Spring中,AOP代理可以是jdk动态代理也可以是CGLIB代理。

8、织入:把切面连接到其他的应用程序类型或者对象上,并创建一个被通知的对象的过程。这个过程可以在编译时、类加载时或者运行时中完成。Spring和其他纯java AOP框架一样,实在运行时完成织入的。

这些概念都太学术了,如果更简单的解释呢,其实很简单:
任何一个系统都是由不同的组件组成的,每个组件负责一块特定的功能,当然会存在很多组件是跟业务无关的,例如,日志、事务、权限等核心服务组件,这些核心服务组件经常融入到具体的业务逻辑中,如果我们为每一个具体业务逻辑操作都添加这样的代码,很明显代码冗余太多,因此我们需要将这些公共的代码逻辑抽象出来变成一个切面,然后注入到目标对象(具体业务)中去,AOP正是基于这样的一个思路去实现的,通过动态代理的方式,将需要注入切面的对象进行代理,在进行调用的时候,将公共的逻辑直接添加进去,而不需要修改原有业务的逻辑代码,只需要在原来的业务逻辑基础上做一些增强功能即可。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值