Spring中关于AOP的实践之概念
一.什么是AOP
AOP:也称作面向切面编程
在分享几个概念执行我想先举个栗子(可能例子举得并不是特别恰当):
1.假如路人A走在大街上,被一群坏人绑架了;
2.警察叔叔接到报警迅速展开行动:收集情报,人员组织,准备装备。。。
3.警察和坏人打了一架,将人质解救出来(在这里我假设人质A受了伤)
4.警察叔叔将人质送往医院治疗
5.警察举行新闻发布会,宣布人质解救成功。
具体流程如下:

但是问题来了,如果哪一天又有人被绑架了,警察叔叔又得通过这一系列流程,有的情况下准备的时间远远大于解救人质所花的时间,那么能不能将一些通用的步骤进行托管,所以有了下面的改进:

情报收集与物质人员准备交给后勤机构,运送伤员则交给医护人员。警察叔叔就专注于与营救人质。
好了现在来解释一下关于Spring中关于AOP的几个要点(异常通知与环绕通知没有在图上画出):

1.切点:即程序沿纵向正常执行时的其中一个方法
2.通知:通知分为前置通知、后置通知、异常通知与环绕通知,前置通知即在切点执行之前先行执行(个人认为多用于资源的准备),后置通知则是在切点执行完成后执行(个人认为多用于方法结束后对资源的处理),异常通知顾名思义在切点执行出现异常时执行的通知,环绕通知则是前置与后置通知的结合
3.切面:正常的程序执行是纵向的,如同一个管道,前置与后置通知的加入如同在管道的某一点切了一刀,程序暂时性的横向执行,即切点与通知一起组成了切面。
4织入:即将通知方法放入到切面中的一种称谓(放入的动作就称为织入)
Spring中关于AOP的实践之概念的更多相关文章
- Spring中关于AOP的实践之AspectJ方式实现通知
(本文中如有不当之处,恳请批评指正) AspectJ方式的简化了通知的出现复杂度.但是对配置文件的操作复杂度有了一定的提升 一. 配置通知 package com.xkx.adviceDemo; im ...
- Spring中关于AOP的实践之Scheme方式实现通知
(刚开始写东西,不足之处还请批评指正) 关于AOP的通知编写方式有两种,使用Schema-baesd或者使用AspectJ方式,本篇主要介绍Schema-baesd方式的代码实现. (注:代码中没有添 ...
- Spring中的AOP
什么是AOP? (以下内容来自百度百科) 面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),通过预编译方式和运行期动态代理实现程序功能的统一维护的一种 ...
- Spring学习笔记(四)—— Spring中的AOP
一.AOP概述 AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.O ...
- (五)Spring 中的 aop
目录 文章目录 AOP概念 AOP原理 AOP术语 **`Spring`** 中的 **`aop`** 的操作 使用 `AspectJ` 实现 `aop` 的两种方式 AOP概念 浅理解 aop :面 ...
- Spring中的AOP 专题
Caused by: java.lang.IllegalArgumentException: ProceedingJoinPoint is only supported for around advi ...
- spring中的AOP 以及各种通知 配置
理解了前面动态代理对象的原理之后,其实还是有很多不足之处,因为如果在项目中有20多个类,每个类有100多个方法都需要判断是不是要开事务,那么方法调用那里会相当麻烦. spring中的AOP很好地解决了 ...
- 2018.12.24 Spring中的aop演示(也就是运用aop技术实现代理模式)
Aop的最大意义是:在不改变原来代码的前提下,也不对源代码做任何协议接口要求.而实现了类似插件的方式,来修改源代码,给源代码插入新的执行代码. 1.spring中的aop演示 aop:面向方面编程.不 ...
- JavaWeb_(Spring框架)认识Spring中的aop
1.aop思想介绍(面向切面编程):将纵向重复代码,横向抽取解决,简称:横切 2.Spring中的aop:无需我们自己写动态代理的代码,spring可以将容器中管理对象生成动态代理对象,前提是我们对他 ...
随机推荐
- 【STM32H7教程】第5章 STM32H7下载和调试方法(MDK5)
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第5章 STM32H7下载和调试方法(MDK5) 本 ...
- Scala脚本化-Ammonite
Scala语言定义: Scala combines object-oriented and functional programming in one concise, high-level lang ...
- sqlmap Bool型&延时型 检测策略分析
目录 sqlmap Bool型&延时型 检测策略分析 0x00 预备-queryPage() 0x01 bool型检测策略 判断依据 quick_ratio() 案例 0x02 延时型 判断依 ...
- Redis的正确使用姿势
前言 说到分布式缓存,可能大多数人脑海浮现的就是redis了,为什么redis能够在竞争激烈的缓存大战中脱颖而出呢?原因无非有一下几点:性能好,丰富的特性跟数据结构,api操作简单.但是用的人多了,就 ...
- [JavaScript] AMD和CMD概述
1. cmd 和 amd 在浏览器中,受网络和浏览器渲染的制约,不能采用同步加载,只能采用异步加载.于是 AMD 规范应运而生 2. AMD AMD(Asynchronous Module Defin ...
- C# ASP.NET MVC:使用Cookie记住账号密码
MVC记住账号密码 使用cookie操作 前端: <div> 用户名:<input type="text" id="UserName" val ...
- TCP的三次握手与四次挥手
TCP的三次握手与四次挥手 一.TCP(Transmission Control Protocol 传输控制协议) TCP是面向对连接,可靠的进程到进程通信的协议 TCP是提供全双工服务,即数据可在同 ...
- 如何让div中的table水平居中
<div style="text-align:center"> <table border="1" cellpadding="3&q ...
- Git来操作GitHub~
设置用户名(设置一次 以后就不用再设置了) git config --global user.name 'taopanfeng' 设置邮箱(设置一次 以后就不用再设置了) git config --g ...
- SQL Server2008进程堵塞处理方法
进程堵塞处理方法: select * from sys.sysprocesses where blocked <>0 and DB_NAME(dbid)='GSHCPDB' ##查询堵 ...