AOP概念
AOP: Aspect Oriented Programming 面向切面编程
Aspect概念
能贯穿到多个类多个方法中的共同代码,称为一个切面。
AOP任务
将多个类多个方法中的共同代码抽取到切面类中,再通过AOP机制切入到原来的位置。
解决的问题
通俗易懂的来说,就是很多方法内有着同样的代码,但又部分不一样,这时候将这些共同的代码提取出来称着为切面,而代码所在的位置称着为切入点,把共同的代码提取到一个类A的某个方法里面,然后设置该方法的切入点,当程序执行到相应的切入点时,会自动执行这个类相应方法里的代码,执行完后回到原本的程序里面继续执行。
解决的问题也就是减少重复代码。但又不同于继承。
开发任务例子:
1.记录每个类出现的异常,将信息写入到数据库。记录项目: 出现异常的类,方法,时间,异常信息。
2.记录每个类出现的异常,发送一个Mail到指定的邮箱。邮件的内容: 出现异常的类,方法,时间,异常信息。
3.记录业务层每个类的每个方法的执行时间,并保存到数据库中。记录的项目:运行类名,方法名,运行时间(毫秒),执行的时间(年,月,日,时,分,秒)
如果使用传统的方法来解决上述问题,对于每个类每个方法都添加同样的代码,那么工作量会很大,如果由30个类,每个类有20个方法,那么你需要粘贴复制600次,这时引入AOP面对切面编程就很容易解决了。
AOP核心的概念
1.Join point 连接点
切面运行的地点:Spring只支持方法的运行:方法前,方法后,方法前后,抛出异常后,等。
2.Pointcut: 切入点:
将有一定规律的连接点合并为一个切入点。
所有业务层类的所有方法前。
所有业务层所有以get开头的方法前。
所有业务层所有以getList开头的方法后。
3.Advice(通知)
切面的执行的代码。
开发人员的主要任务是编写Advice代码。
4.Aspect(切面)
Aspect=Advice+Pointcut
指示在指定的Pointcut上执行Advice代码。
5.Target object(目标对象)
切面要切入的目标对象。
6.Weaving (织入)
将切面与目标对象融合在一起的过程或机制。
7.AOP proxy 代理
由代理对象将目标对象和切面对象,Spring自动创建代理对象。