第一篇主要有个大致的了解,这一篇主要介绍一些AOP常见的概念以及理解。AOP作为面向切面的编程,我们首先会想到的是切面,那到底切面是如何定义的呢?
1.切面(Aspect):
切面就是Aspect,所谓切面就是Java中对横切关注点(cross cutting concerns)的抽象,设置横切关注点(cross cutting concerns)是提供很多高级拓展功能的基础。咋一看引出来了一个横切关注点这个概念,让人摸不着头脑,其实简单的可以这样理解,横切关注点就是一些非核心业务代码,它分布在核心业务代码的多个点位处,而各处基本相似,比如权限认证、日志、事物。学过几何的都了解过,点连成线,线连成面,可以理解为当很多的横切关注点连在一起就可以抽象成切面。
2.横切关注点(cross cutting concerns):
横切关注点的基本概念上面也简单介绍了,作为非核心业务代码,与之相对应的是核心关注点,即核心业务代码,核心业务代码是我们在逻辑处理流程中非常关注的。横切业务点和核心关注点交叉出现,就构成了功能完备的代码。
3.切点(point cut):
切点这个概念可以理解为横切的点,定义了在业务逻辑代码块的那个地方进行切割,我们通常使用明确的类的方法名称来指定这些切点。有切割的点那么就会有相应的连接点,这样才可以把代码给连接起来。
4.连接点(join point):
连接点是在核心业务代码中能够插入切面的一个点,它的存在于切点的前方,后方等地方,通俗的理解可以认为是连接点就是把这些切口给缝合起来,连接起来的点。那么用什么连接的呢?就是通知(advice)
5.通知(advice):
所谓通知,就是可以简单地理解为在连接点被拦截后要执行的代码,即连接切点的代码,通知分为前置、后置、异常、最终、环绕通知五类。before,after,throwing,return,around。
针对上述五个概念可以用一张图来简单介绍下:下图可以看出来,通知可以理解为连接点处所用到的材料。
总结:AOP的基本概念不止这五个,但是这五个是常用到的概念,可以把面向切面编程看成一种剪切写满核心业务逻辑的代码纸张,然后把这些代码通过连接点填充通知给连接起来。这样既实现了业务逻辑代码,也实现了一些拓展功能。