横切关注点

  • 对那些方法进行拦截,拦截后怎么处理,这些就叫横切关注点
  • 比如:权限认证、日志、事务

通知 Advice

  • 在特定的切入点上执行的增强处理,有5种通知
  • 用途:记录日志、控制事务、提前编写好通用的模块,需要的地方直接调用

连接点 JointPoint

  • 要用通知的地方,业务流程在运行过程中需要插入切面的具体位置
  • 一般是方法的调用前后,全部方法都可以是连接点
  • 只是概念,没啥特殊

切入点 Pointcut

  • 不能全部方法都是连接点,通过特定的规则来筛选连接点,就是Pointcut,选中那几个你想要的方法
  • 在程序中主要体现为书写切入点表达式(通过通配、正则表达式)过滤出特定的一组JointPoint连接点
  • 过滤出相应的Advicce将要发生的joinPoint地方

切面 Aspect

  • 通常是一个类,里面定义 切入点+通知,定义在什么地方;什么时间点,做什么事情
  • 通知 advice致命类时间和做的事情(前置、后置等)
  • 切入点pointcut指定在什么地方干这个事情
  • web接口设计中,web层-》网关层-》服务层-》数据层,每一层之间也是一个切面,对象和对象,方法和方法之间都是一个个切面

目标 target

  • 目标类,真正的业务逻辑,可以在目标类不知情的条件下,增加新的功能到目标类的链路上

织入 Weaving

  • 把切面(某个类)应用到目标函数的过程成为织入

AOP 代理

  • AOP框架创建的对象,代理就是目标对象的加强
  • Spring中的AOP代理可以使用JDK动态代理,也可以是CGLIB代理

Spring AOP面向切面编程核心概念的更多相关文章

  1. 详细解读 Spring AOP 面向切面编程(二)

    本文是<详细解读 Spring AOP 面向切面编程(一)>的续集. 在上篇中,我们从写死代码,到使用代理:从编程式 Spring AOP 到声明式 Spring AOP.一切都朝着简单实 ...

  2. 浅谈Spring AOP 面向切面编程 最通俗易懂的画图理解AOP、AOP通知执行顺序~

    简介 我们都知道,Spring 框架作为后端主流框架之一,最有特点的三部分就是IOC控制反转.依赖注入.以及AOP切面.当然AOP作为一个Spring 的重要组成模块,当然IOC是不依赖于Spring ...

  3. 从源码入手,一文带你读懂Spring AOP面向切面编程

    之前<零基础带你看Spring源码--IOC控制反转>详细讲了Spring容器的初始化和加载的原理,后面<你真的完全了解Java动态代理吗?看这篇就够了>介绍了下JDK的动态代 ...

  4. Spring AOP 面向切面编程入门

    什么是AOP AOP(Aspect Oriented Programming),即面向切面编程.众所周知,OOP(面向对象编程)通过的是继承.封装和多态等概念来建立一种对象层次结构,用于模拟公共行为的 ...

  5. spring AOP面向切面编程学习笔记

    一.面向切面编程简介: 在调用某些类的方法时,要在方法执行前或后进行预处理或后处理:预处理或后处理的操作被封装在另一个类中.如图中,UserService类在执行addUser()或updateUse ...

  6. 详细解读 Spring AOP 面向切面编程(一)

    又是一个周末, 今天我要和大家分享的是 AOP(Aspect-Oriented Programming)这个东西,名字与 OOP 仅差一个字母,其实它是对 OOP 编程方式的一种补充,并非是取而代之. ...

  7. Spring Aop面向切面编程&&自动注入

    1.面向切面编程 在程序原有纵向执行流程中,针对某一个或某一些方法添加通知,形成横切面的过程叫做面向切面编程 2.常用概念 原有功能:切点,pointcut 前置通知:在切点之前执行的功能,befor ...

  8. 【Spring系列】Spring AOP面向切面编程

    前言 接上一篇文章,在上午中使用了切面做防重复控制,本文着重介绍切面AOP. 在开发中,有一些功能行为是通用的,比如.日志管理.安全和事务,它们有一个共同点就是分布于应用中的多处,这种功能被称为横切关 ...

  9. Spring AOP面向切面编程详解

    前言 AOP即面向切面编程,是一种编程思想,OOP的延续.在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等等.在阅读本文前希望您已经对Spring有一定的了解 注:在能对代码进行添 ...

  10. Spring AOP 面向切面编程相关注解

    Aspect Oriented Programming 面向切面编程   在Spring中使用这些面向切面相关的注解可以结合使用aspectJ,aspectJ是专门搞动态代理技术的,所以比较专业.   ...

随机推荐

  1. JDK源码阅读-------自学笔记(十)(java.lang.Integer包装类初探)

    自动装箱和拆箱 JDK1.5后,Java引入了自动装箱(autoboxing)/拆箱(unboxing) 自动装箱 基本数据类型在需要时自动转化为对象 自动装箱 对象在需要时自动转化为基本数据类型 注 ...

  2. java学习之旅(day.02)

    java运行机制 编译型:转换为计算机可读的语言 解释型:用什么,读什么 预编译:java文件(源程序)通过javac命令到class文件,class文件(类)放入类加载器,这个类就加载到JVM中了, ...

  3. (二)Redis 数据类型与结构

    1.值的数据类型 Redis "快"取决于两方面,一方面,它是内存数据库,另一方面,则是高效的数据结构.Redis 键值对中值的数据类型,也就是数据的保存形式有5种:String( ...

  4. 为datagridview添加自定义按钮

    先上图: 我是直接网上搜得代码,不是本人写得.下面说说大体思路,继承DataGridViewButtonCell类实现自定义类比如这个:DataGridViewDetailButtonCell 里面, ...

  5. ubuntu18.04最小化安装

    ubuntu 18.04虚拟机安装 镜像下载地址: https://releases.ubuntu.com/18.04/ubuntu-18.04.6-live-server-amd64.iso 创建虚 ...

  6. 218. The Skyline Problem-Hard

    一.题目描述 给定建筑的轮廓坐标,求叠加之后的轮廓结果 二.解法 这个题目最容易想到的思路是扫描法 https://briangordon.github.io/2014/08/the-skyline- ...

  7. 微信小程序跳转重新加载目标页

    可用于在首次进入到小程序后就执行性了首页的onLoad方法,等你再去点击其它页面再回来的时候就不会加载onLoad了,比如你跳到登录页后再返回到首页会发现首页啥数据都没加载,所以你在登录那边进行跳转的 ...

  8. linux系统下,安装docker教程,以CentOS8为例

    查看本机的系统信息: 使用命令 lsb_release -a ,可以看到本机是CentOS系统,版本是8.4.2105 一.安装docker 1.Docker的安装要求CentOS系统内核版本要高于3 ...

  9. 图片jpg,png转为BASE64编码

    -- using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; namespace aliy ...

  10. Semantic Kernel入门系列:通过依赖注入管理对象和插件

    前言 本章讲一下在Semantic Kernel中使用DependencyInject(依赖注入),在之前的章节我们都是通过手动创建Kernel对象来完成框架的初始化工作,今天我们用依赖注入的方式来实 ...