AOP
一、概念
- AOP:面向切面编程/面向切片编程
与OOP不同,AOP是面向切面的编程,这个概念比OOP抽象许多,在看了网课教程和部分博客后,我认为可以把它与代理紧密相连。将程序中共有的代码实现抽取出来,使用动态代理,不用更改原来的方法,实现对方法的增强。
所以什么是切面呢?切面在AOP中定义是切入点和通知的结合,织入。这里又涉及了另外两个新词汇,切入点和通知。
- 连接点:类中的方法
- 切入点:类中需要被增强的方法
- 通知:为了增强类添加的功能
- 切面:切入点加入到通知中组成切面
这么说下了,切面这个概念还是很抽象,下面我会用通俗的说法来介绍我的理解
二、切面的通俗理解
- 我开发了一个项目,用于查询成绩,当然你还可以查询别人的成绩。随后我利用爬虫对接了学校的接口,实现了查询成绩前需登陆学校账号的功能。后来,我还想知道哪些人使用过查询成绩的功能,所以我需要添加一个记录日志的功能,当有人登陆后,我会记录她登陆的学号。
- 在不改变原有service层登陆方法的前提下,我利用AOP的方式,使用代理来增强我原有的代码,最终需要做到学生登陆,服务器记录学号,这样一个日志+登陆系统就是一个切面,我们要面向它来编写相关业务
- 在执行登陆前,我们不需要干什么,于是没有前置通知。登陆成功后,系统记录学号到文件中,该功能为后置通知。若密码错误或者学号不存在等因素造成登陆失败,系统返回错误信息,不记录,此为异常通知。最终我们都要告知学生登陆是否成功的消息,此为最终通知。
- 这样,既实现了登陆又完成了记录,面向日志+登陆的切面编程就实现了
三、小结
以上内容纯属个人的初级理解,和AOP实际的理解偏差较大,仅供参考!