AOP概述(什么是AOP?)——Spring AOP(一)
AOP概述–什么是AOP
面向切面编程,能够让我们在不影响原有功能的前提下,为软件横向扩展功能 。AOP解决了OOP中遇到的一些问题,是OOP的延续和扩展。
什么是横向扩展?
软件项目中的三层架构分为持久层,业务层和表示层。当我们处理一个任务时,是从表示层开始到业务层再到持久层,这是一个纵向的过程。而横向的意思就是值针对其中的任意一层,对这一层的所有方法进行处理。
举例:在教学管理系统中,如果我们要查询所有的student,则需要先从表示层执行查询list方法,再去业务层执行list方法,再到持久层执行list方法。要查询所有的teacher,也是一样的过程。那我们现在要做一个操作,让不管哪个模块只要是执行了任何一个业务层的list方法时就抛出一个异常,这种半路插刀的方式就是横向扩展功能。
如上图所示:
当我们需要在许多类中添加相同逻辑(或记录等其他)代码的时候,一般我们编程会在每一个类中都写上这些代码。当需要修改的时候,我们又必须找出这些类来删除这些逻辑代码。
当我们需要这些逻辑代码指定到类中的某个方法前面执行,或者在方法后面执行,又或者我想指定在类的某一个位置去执行它,我们就要修改类了。
黑线为一个流程代码,红线为切入的代码。即在4个流程中固定位置插入了2个逻辑代码,如果你不需要的时候,你完全可以撤出红线代码,而要修改的话,也只需修改这三个类(红线)即可,因为主代码(黑线)和添加代码(红线)是没有耦合的,相当于插拔式的(此案例引用了之前读过的一篇博客,找不到原文了)。
这就是我们所说的AOP,AOP就是在某一个类或方法执行前后打个标记,声明在执行到这里之前要先执行什么,执行完这里之后要接着执行什么。插入了新的执行方法。
如果此出还是有不懂的朋友,可以看下一章更详细的AOP设计原理:
AOP概述(什么是AOP?)——Spring AOP(一)相关推荐
- 一步一步手绘Spring AOP运行时序图(Spring AOP 源码分析)
相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...
- 在Intellij上面导入项目 AOP示例项目 AspectJ学习 Spring AoP学习
为了学习这篇文章里面下载的代码:http://www.cnblogs.com/charlesblc/p/6083687.html 需要用Intellij导入一个已有工程.源文件原始内容也可见:link ...
- spring aop不执行_使用Spring AOP重试方法执行
spring aop不执行 我的一位博客关注者发送了一封电子邮件,要求我显示" Spring AOP的RealWorld用法"示例. 他提到,在大多数示例中,都演示了Spring ...
- java aop管理权限_基于spring aop 权限管理系统原型 - andyj2ee - BlogJava
此权限管理系统把待访问的业务层方法做为权限管理中的资源,通过spring aop 对接口方法进行拦截,来实现权限的管理,可以实现细粒度的权限控制. 在上文体验了spring aop 一些特性,aop ...
- spring aop实现过程之二Spring AOP中拦截器链
1.开始步骤--获取AopProxy主流程 ProxyCreatorSupport.java /*** Subclasses should call this to get a new AOP pro ...
- Spring Aop 组件概述
Spring Aop 概述 AOP(Aspect-Oriented Programming) 面向切面编程, 这种编程模型是在 OOP(Object-Oriented Programming) 的基础 ...
- Spring AOP概述及底层实现原理
Spring AOP概述及底层实现原理 aop概述 AOP全称为Aspect Oriented Programming的缩写,意为:面向切面编程.将程序中公用代码进行抽离,通过动态代理实现程序功能的统 ...
- spring AOP 概述(一) Advice
Advice通知 Advice(通知)定义在连接点做什么,为切面增强织入接口.在Spring AOP中,它主要描述Spring AOP 围绕方法调用而注入的切面行为.Advice是AOP联盟定义的一个 ...
- spring aop原理_Spring知识点总结!已整理成142页离线文档(源码笔记+思维导图)...
写在前面 由于Spring家族的东西很多,一次性写完也不太现实.所以这一次先更新Spring[最核心]的知识点:AOP和IOC 无论是入门还是面试,理解AOP和IOC都是非常重要的.在面试的时候,我没 ...
- 比较Spring AOP和AspectJ
1. 介绍 当前有多个可用的AOP库,这些库必须能够回答许多问题: 它与我现有的或新的应用程序兼容吗? 在哪里可以实施AOP? 它与我的应用程序集成的速度有多快? 性能开销是多少? 在本文中,我们将着 ...
最新文章
- 迈出编程第一步!必知必会的10个编程技巧及查错方法
- python3.6 messagebox_Python Tkinter GUI编程入门介绍
- matlab读入从文件中读取大量的数据
- 如何检查jQuery中是否已选中复选框?
- 简单的用Python实现学生信息管理
- 论文,成本管理与进度管理(主成本)
- python for循环文件每一行_python – 在使用for循环读取文件时跳过一行
- Spark优化一则 - 减少Shuffle
- Javascript三种创建对象的方法,new关键字,for...in 遍历对象
- 编写更加稳定、可读性强的JavaScript代码
- 信息检索 IR 中的评价指标
- MNIST数据集使用详解
- 软件工程毕设(二)·任务书
- 公差基本偏差代号_公差代号和公差带代号有什么区别?
- Win10 解决CSDN、阿里云国内站、小米商城国内站等国内网站打不开的问题(超详细教程)
- js获取当前是第几周
- 新生儿的一类(免费)疫苗(截止2019年)
- python决策树案例_决策树案例:基于python的商品购买能力预测系统
- Tesseract OCR简介(一)
- 微众AI产品经理熊猫杨:AI产品设计的6点心得体会