AOP概念:
AOP——Aspect-Oriented Programming,面向切面编程,它是spring框架的一个重要组成部分。一般的业务逻辑都有先后关系,我们可以理解为纵向关系,而AOP关注的是横向关系,每一个关注点可以理解为一个横切面。例如我们的大部分代码都会涉及到日志记录,很多的数据库操作都会涉及到事务的创建和提交。那么从横向关注这些逻辑,他们都一个个的切面。
AOP技术的具体实现
可以通过动态代理技术或者是在程序编译期间进行静态的"织入"方式。AOP经常使用的场景包括:日志记录,事务管理,异常处理,安全控制等方面。Spring 中 AOP 代理由 Spring 的 IoC 容器负责生成、管理,其依赖关系也由 IoC 容器负责管理。在spring中可以仅通过配置文件实现AOP,也可以使用注解实现。
AOP相关概念:
Aspect(方面,切面):系统中需要实现的那些交叉功能,是系统模块化的一个切面,或领域。如日志记录。
Joinpoint(连接点):应用程序执行过程中,插入切面的地点,可以是方法调用,异常抛出,或者要修改的字段。
Advice(通知):切面的实际实现,他通知系统新的行为。AOP通知大致上包括:前置通知(Before),环绕通知(Around),后置通知(After Returning),异常通知(Throws Advice) .。
Pointcut(切入点):定义了将通知应用到哪一个连接点。本质上是一个捕获连接点的结构。在AOP中,可以定义一个point cut,来捕获相关方法的调用。
Introduce(引入):为对象引入附加的方法或属性,从而达到修改对象结构的目的。
目标对象:被通知的对象,既可以是你编写的类,也可以是第三方类。
代理:将通知应用到目标对象后创建的对象,应用系统的其他部分不用为了支持代理对象而改变
Weaving(编织,织入):将切面应用到目标对象从而创建一个新代理对象的过程。织入发生在目标对象生命周期的多个点上:编译器,类装载期,运行期。
spring 实现AOP方式
配置文件和注解方式