重温Spring之AOP

目录

  • AOP理解

    • 术语
  • 代理模式
    • 概念
    • 静态代理
    • 动态代理
    • AOP原理

AOP理解

  • 面向切面编程,是OOP面向对象编程的补充。将程序中交叉的业务逻辑代码提取出来,封装成切面,由AOP容器在适当的时机将封装的切面动态的织入到具体业务逻辑中。

术语

  • 连接点 joinpoint
    程序执行中某一特定位置,eg 方法调用前或后,方法抛出异常
  • 切入点 pointcut
    定位查找到需要的连接点,一个切点可以包含多个切入点
  • 增强 Advice 也成为通知
    在切点上执行的一段代码,用来实现某些功能
  • 目标对象 target
    将执行增强处理的目标类
  • 织入 weaving
    将增强添加到目标类中具体切入点的过程
  • 代理
    一个类被织入增强后,会产生一个代理类,这个类包含原类以及增强
  • 切面
    切点和增强的组合
  • 引介/引入 introduction


代理模式

概念

  • 为其他对象提供一种代理,以控制对这个对象的访问,起到中介的作用
    通过代理对象访问目标对象,可以增强额外的操作,扩展目标对象的功能

静态代理

  • 手动创建
    代理对象需要与目标类实现相同接口,维护麻烦


动态代理

  • 由JVM根据反射动态生成,程序运行前不存在代理类的字节码文件

JDK

目标对象必须实现一个或多个接口

CGLIB



AOP原理

原文地址:https://www.cnblogs.com/VVII/p/12332495.html

时间: 2024-10-25 17:24:04

重温Spring之AOP的相关文章

8 -- 深入使用Spring -- 4... Spring的AOP

8.4 Spring的AOP AOP(Aspect Orient Programming),也就是面向切面编程,最为面向对象编程的一种补充. AOP和OOP互为补充,面向对象编程将程序分解成各个层次的对象,而面向切面编程将程序运行过程分解成各个切面.可以这样理解:面向对象编程是从静态角度考虑程序结构,而面向切面编程则是从动态角度考虑程序运行过程. 8.4.1 为什么需要AOP 8.4.2 使用AspectJ实现AOP 1.下载和安装AspectJ 2.AspectJ使用入门 8.4.3 AOP的

Spring 之 AOP

面向方面的编程,即 AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化.AOP 的核心构造是方面, 它将那些影响多个类的行为封装到可重用的模块中. 通常情况下,对于AOP,我们有两种方式来实现. 使用DynamicProxy实现AOP 下面是一个简单的示例,首先定义业务对象: 1 public interface UserDao { 2 3 void save(); 4 } 5 6 public class UserDaoImpl imp

Spring实现AOP的4种方式(转)

转自:http://blog.csdn.net/udbnny/article/details/5870076 Spring实现AOP的4种方式 先了解AOP的相关术语:1.通知(Advice):通知定义了切面是什么以及何时使用.描述了切面要完成的工作和何时需要执行这个工作.2.连接点(Joinpoint):程序能够应用通知的一个“时机”,这些“时机”就是连接点,例如方法被调用时.异常被抛出时等等.3.切入点(Pointcut)通知定义了切面要发生的“故事”和时间,那么切入点就定义了“故事”发生的

Java反射—模拟Spring的Aop

1.    大概流程 上篇文章已经结合Java反射解释了SpringAop的原理,这里我们简单模拟以下Spring的Aop实现.大体流程如下: ?  创建一个properties配置文件模拟Spring配置文件. ?  创建一个增强接口与一个实现类模拟Spring的Advice. ?  创建一个生成代理的工厂类,并在InvocationHandler类的invoke方法中织入增强方法(即aop). ?  创建一个生成Bean的工厂类(类似IOC工厂,只创建bean,没有依赖注入的功能),生成Be

Spring实现AOP的4种方式

来自:http://blog.csdn.net/udbnny/article/details/5870076 先了解AOP的相关术语: 1.通知(Advice):通知定义了切面是什么以及何时使用.描述了切面要完成的工作和何时需要执行这个工作.2.连接点(Joinpoint):程序能够应用通知的一个“时机”,这些“时机”就是连接点,例如方法被调用时.异常被抛出时等等.3.切入点(Pointcut)通知定义了切面要发生的“故事”和时间,那么切入点就定义了“故事”发生的地点,例如某个类或方法的名称,S

spring的AOP个人理解和使用

1什么是AOP:AOP是面向切面编程,也就是说面向某个功能模块编程,典型的应用就是Spring的声明式事务, Spring的AOP事务解析: 在以前的事务管理是要融合在逻辑代码中的,在逻辑代码中决定事务是否提交或者回滚,这样很容易造成代码难以维护,代码冗余 但是使用spring的声明式事务后,只需要在数据库处理方法上注解事务,就可以对操作进行管理,事务的设置和逻辑代码分开,容易维护2AOP有什么作用 :面向切面编程,例如某个功能点,我们只需抽取横切关注点,然后让需要处理这些功能点的方法来使用代理

第二十八天 月出惊山鸟 —Spring的AOP

6月13日,阴转细雨."人闲桂花落,夜静春山空.月出惊山鸟,时鸣春涧中." 不管在面向过程还是在面向对象里,神奇的"纯"字,似乎永远都充满了无限的可能性.除了函数之所调用.类之所封装,在程序员文化里,对于"纯粹"的感知和定义,既起自于代码,又超越了代码.也就是说,能够真真切切地感觉到纯净的,不仅是我们的每一个Bean和每一个Class,还包括每个Coder的心. 然而,客户的需求是千变万化和千奇百怪的,Spring在为Coder在应对和处理各自不

Spring框架第五篇之Spring与AOP

一.AOP概述 AOP(Aspect Orient Programming),面向切面编程,是面向对象编程OOP的一种补充.面向对象编程是从静态角度考虑程序的结构,而面向切面编程是从动态角度考虑程序运行过程. AOP底层就是采用动态代理模式实现的,采用了两种代理:JDK的动态代理与CGLIB的动态代理. 面向切面编程,就是将交叉业务逻辑封装成切面,利用AOP容器的功能将切面织入到主业务逻辑中.所谓交叉业务逻辑是指,通用的.与主业务逻辑无关的代码.如安全检查.事务.日志等. 若不是用AOP,则会出

Spring的AOP详解

Spring的AOP详解 一.AOP基础 1.1AOP是什么 考虑这样一个问题:需要对系统中的某些业务做日志记录,比如支付系统中的支付业务需要记录支付相关日志,对于支付系统可能相当复杂,比如可能有自己的支付系统,也可能引入第三方支付平台,面对这样的支付系统该如何解决呢? 传统解决方案 1.日志部分定义公共类LogUtils,定义logPayBegin方法用于记录支付开始日志, logPayEnd用于记录支付结果 logPayBegin(long userId,long money) logPay