Spring之AOP

旧时模样 提交于 2020-02-28 12:56:04

简介

1、概念

AOP:Aspect-Oriented Programming 面向切面编程,是OOP面向对象编程的一种补充。

将程序宗交叉业务逻辑(事物、日志)代码提取出来,封装成切面,有AOP容器在适当时机(代码位置)将封装的切面动态的织入到具体业务逻辑中。

AOP不是Spring特有的,C++等也有。

2、应用场合

适用于具有横切逻辑的场合,如事物管理、日志管理、性能检测、异常通知、访问控制等。

3、作用

1)不改变原有代码的基础上动态添加新的功能。

2)模块化

4、术语

连接点Joinpoint : 

程序执行的某个特定的位置,如方法调用前、方法调用后、方法抛出异常时、方法调用前后等。

切入点:

定位查找到需要的连接点,即切入点。一个切入点可包含多个连接点。

增强 Advice :

在切点上执行的一段程序代码,用来实现某些功能。

目标对象 target:

将执行增强处理的目标类。

织入 weaving:

将增强添加到目标类具体切入点上的过程。

代理 proxy:

一个类被织入增强之后,会产生代理类。

切面 aspect:

切点和增强的组合就叫做切面。

引介 Introduction 也称为引入:

可以为一个类添加一些属性和方法,但是一般不建议使用。

重点理解切入点、增强、目标对象 的概念

实现原理

1、代理模式

概念:为其他对象提供一种代理,以控制对这个对象的访问,起到中介的作用。

        通过代理对象访问目标对象,可以增强额外的操作,扩展目标对象的功能。

分类:

    静态代理

     代理类是程序员自己创建,或者工具生成的。

    所谓的静态就是程序运行之前就已经存在代理类的字节码文件。

    动态代理

    代理类是程序在运行期间由JVM虚拟机根据反射等机制动态生成的,自动生成代理类和代理对象。

    所谓动态就是指程序运行之前不存在代理类的字节码文件。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!