Spring框架学习05——AOP相关术语详解

1、Spring AOP 的基本概述

AOP(Aspect Oriented Programing)面向切面编程,AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码(性能监视、事务管理、安全检查、缓存)。Spring AOP使用纯Java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类织入增强代码。

2、AOP的相关术语

在Spring AOP 框架中涉及以下常用术语:

  • 连接点(Joinpoint):是指程序运行中的一些时间点,即那些被拦截到的点,例如方法的调用或异常的抛出;
  • 切入点(Pointcut):是指需要处理的连接点,所有的方法执行都是连接点,而切入点是一个描述信息,它修饰的是连接点,通过切入点确定哪些连接点需要被处理;
  • 切面(Aspect):是指封装横向切到系统功能的类(例如事务处理),是切入点和通知的结合;
  • 通知(Advice):也被称为增强,是由切面添加到特定的连接点的一段代码,简单来说,通知就是指拦截到的连接点之后所要做的事情,因此通知是切面的具体实现;通知分为前置通知、后置通知、异常通知、最终通知、环绕通知;
  • 引介(Introduction):也被称为引入,允许在现有的实现类中添加自定义的方法和属性;
  • 目标对象(Target Object):是指被通知的对象,即代理的目标对象;
  • 织入(Weaving):是将切面代码插入到目标对象上,从而生成代理对象的过程;
  • 代理(Proxy):是通知应用到目标对象之后被动态创建的对象;

3、AOP术语详解

创建dao包,并创建StuDao接口和接口实现类StuDaoImpl,代码示例如下:
StuDaoImpl实现类

public class StuDaoImpl implements StuDao {
    @Override
    public void add(Stu stu) {
        System.out.println("添加学生");
    }

    @Override
    public void find() {
        System.out.println("查询学生");
    }

    @Override
    public void update(Stu stu) {
        System.out.println("修改学生");
    }

    @Override
    public void delete(Stu stu) {
        System.out.println("删除学生");
    }
}

参考以上代码,其中:

  • Joinpoint(连接点)是指可以被拦截到的点,实现类中的增删改查这些方法都可以被增强,这些方法称为连接点;
  • Pointcut(切入点)是指真正被拦截到的点,如果只想对add()方法进行增强(例如做数据校验),add()方法就是切入点;
  • Advice(通知)是指拦截后要做的事情,也叫增强,如果对add()方法进行数据校验,数据校验的方法就是通知;
  • Target(目标对象)是指被增强的对象,实现类StuDaoImpl就是目标对象;
  • Weaving(织入)是指将通知应用到目标对象的过程,将数据校验应用到StuDaoImpl的add()方法的过程,就是织入;
  • Proxy(代理)是指被应用了增强后,产生一个代理对象;
  • Aspect(切面)是指切入点和通知的组合;

原文地址:https://www.cnblogs.com/jpwz/p/10567316.html

时间: 2024-10-14 00:46:58

Spring框架学习05——AOP相关术语详解的相关文章

Spring框架学习06——AOP底层实现原理

在Java中有多种动态代理技术,如JDK.CGLIB.Javassist.ASM,其中最常用的动态代理技术是JDK和CGLIB. 1.JDK的动态代理 JDK动态代理是java.lang.reflect.*包提供的方法,必须要借助一个接口才能产生代理对象,对于使用业务接口的类,Spring默认使用JDK动态代理实现AOP.代码示例如下:创建dao包,并创建StuDao接口和StuDaoImpl实现类,StuDao接口 public interface StuDao { public void a

spring框架学习(三)——AOP( 面向切面编程)

AOP 即 Aspect Oriented Program 面向切面编程 首先,在面向切面编程的思想里面,把功能分为核心业务功能,和周边功能. 所谓的核心业务,比如登陆,增加数据,删除数据都叫核心业务 所谓的周边功能,比如性能统计,日志,事务管理等等 周边功能在Spring的面向切面编程AOP思想里,即被定义为切面 在面向切面编程AOP的思想里面,核心业务功能和切面功能分别独立进行开发 然后把切面功能和核心业务功能 "编织" 在一起,这就叫AOP 原理图 1. 功能分两大类,辅助功能和

hibernate框架学习笔记2:配置文件详解

实体类: package domain; public class Customer { private Long cust_id; private String cust_name; private String cust_source; private String cust_industry; private String cust_level; private String cust_linkman; private String cust_phone; private String c

struts2框架学习笔记2:配置详解

核心配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <

【STL学习】堆相关算法详解与C++编程实现(Heap)

转自:https://blog.csdn.net/xiajun07061225/article/details/8553808 堆简介 堆并不是STL的组件,但是经常充当着底层实现结构.比如优先级队列(Priority Queue)等等. 堆是一种完全二叉树,因此我们可以用数组来存储所有节点.在这里的实现中,采用了一个技巧:将数组中索引为0的元素保留,设置为极大值或者为极小值(依据大顶堆或者小顶堆而定).那么当某个节点的索引是i时,其左子节点索引为2*i,右子节点索引为2*i+1.父节点是i/2

网站统计相关术语详解

1. 访问Visit: 一次访问就是指一个人来到网站,然后浏览了一些内容之后离开网站的过程:这个过程也被称之为会话,也就是session.注意关闭浏览器后session会话并不会自动销毁,因为服务器端session往往默认有个20分钟的过期时间,如果关闭浏览器后又打开并且访问了同一个网址,这时候只要浏览器的cookie还是存在的(即:浏览器关闭时,cookie不设置为自动销毁的话),那么服务端还会认为是登录状态,也就是属于同一次会话.相反,如果没有关闭浏览器,但未做任何操作,但是过了30分钟后则

spring框架学习(六)AOP

spring框架学习(六)AOP AOP(Aspect-OrientedProgramming)面向方面编程,与OOP完全不同,使用AOP编程系统被分为方面或关注点,而不是OOP中的对象. AOP的引入 在OOP面向对象的使用中,无可避免的会出现代码重复,而且使用面向对象的编程方式,这种重复无法避免,比如用户权限判断中,根据相应的权限执行相应的方法:在servlet中设置编码格式时,同样相同的代码出现很多次,而且还根业务无关,很容易忘记写,结果运行的时候就出现乱码拉.这种重复代码不仅使编码麻烦,

Spring AOP相关术语

---------------------siwuxie095 Spring AOP 相关术语 (1)Joinpoint(连接点) 所谓连接点,是指类中可以被增强的方法 (2)Pointcut(切入点) 所谓切入点,是指要对哪些 Joinpoint 进行拦截的定义,即 类中实际 被增强的方法 (3)Advice(通知/增强) 所谓通知,是指拦截到 Joinpoint 之后所要做的事情,即 增强的逻辑 「通知 即 增强」 通知分为:前置通知.后置通知.异常通知.最终通知.环绕通知 (4)Aspec

Spring框架学习之IOC(一)

Spring框架学习之IOC 先前粗浅地学过Spring框架,但当时忙于考试及后期实习未将其记录,于是趁着最近还有几天的空闲时间,将其稍微整理一下,以备后期查看. Spring相关知识 spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器.可单独使用,通常也与其他框架整合使用,例如SSH.SSM. IOC:控制反转 控制权由对象本身转向容器:由容器根据配置文件去创建实例并创建各个实例之间的依赖关系.等同于DI依赖注入 A