SpringAOP:面向切面编程(面向fifter编程)  

  通俗易懂术语:所有纵向重复的代码,我们提取成横向的代码

  

  以下文章内容参考知乎:从0带你学习SpringAOP,彻底的理解AOP思想  传送门

1、什么是AOP?
更为准确的说AOP其实是一种软件设计思想,而不是一种特定技术,但是它又可以应用到任何的技术领域,只要是理解了AOP这种思想,其实都可以将它运用到项目中去。

  

  既然说这到这个问题,那么到底什么是AOP?它又是应用在哪些场景下呢?    

  AOP在我看来可以用一句很简单的话来进行概述就是,“程序在运行时,动态的将代码切入到类的指定方法或者说指定位置上”,这就是AOP。这样说大家是不是有点明白了。

Java中面向对象的三大特征分为封装、继承、多态,假设现在有两个类,一个为Teacher(老师类)和Student(学生类),学生和老师都得吃饭、睡觉,但是老师和学生有具有自己的一些行为,比如老师会教书,但是学生不需要教书,学生却需要听课,根据面向对象的三大特征,我们可以将老师和学生的共同所具有的行为提取出来,让老师和学生去继承就可以,这样就提高了我们代码的复用性。

  我曾经以为这样就很完美了,直到我遇到这种情况,这是一个方法,进入方法执行方法体的时候,要先开启事务,最后提交事务,并且每个方法都是受事务控制的,这样我们可以发现,出现了大量的重复代码,那么有没有什么什么比较好的办法,来解决这个问题呢?

  

  画这样一个图,大家应该就可以看的更清楚了,我们的业务代码就是圈里面的核心,事务管理在圈的外层,我们的业务代码是受事务的管控的。

  

  再来一个更直观的图,可以看到,现在将我们的业务代码和原来重复的代码进行了分离,独立为一个单独的模块,这样我们的业务中就不会有那么多冗余的代码了。但是大家可能又要问了,你这么分离出来,怎么样将它融合进去呢?其实这就是AOP解决的问题。

  

 2. AOP的应用场景

从上面的例子中大家应该可以大致了解AOP的作用,那么在实际的开发中呢想要使用AOP它是需要一些场景的,像一些比较常见的场景就是:系统的性能检测、访问控制、事务管理以及日志记录。

  我现在在做的项目中在权限控制、日志记录、匹配映射参数都是使用AOP来完成的,所以说搞懂AOP可以帮你做好多事情。

3. AOP的术语

1) 连接点(JoinPoint)
什么是连接点,看了一下官方的,看完懵逼,说的太官方了,其实所谓的连接点就是“一个应用执行过程中能够插入一个切面的点”,比如说黑客攻击你的电脑,他总要找到一个入口,没有入口就无法进行攻击,连接点就相当于这个入口;

2) 切点(Pointcut)
一个程序中可能存在多个连接点,如果我们想要找到我们需要的连接点,那么就需要根据切点来进行定位;

3) 增强(Advice)
增强就是织入目标类连接点上的一段代码,就是黑客进入到你的电脑后要做的事情;

4) 目标对象(Targer)
增强逻辑的织入目标类,黑客攻击你的电脑,那么你的电脑就是目标类;

5) 引介(IntroductIon)
引介是一种特殊的增强,它为类添加了一些属性和方法。这样,即使一个业务类原本没有实现某个接口,通过AOP的引介功能,也可以动态地为该业务添加接口的实现逻辑,让业务类变成这个接口的实现;

6) 织入(Weaving)
织入其实就是将我们增强的代码添加到具体连接点上的过程;

7) 代理(Proxy)
一个类被AOP织入增强后,就产生了一个结果类,它融合了原类和增强逻辑的代理类;

8) 切面(Aspect)
切面有切点和增强组成,它既包括横切逻辑的定义,也包括连接点的定义;
通过前面简单的介绍,相比大家对AOP已经有了一个简单的认识,后面再说了一下AOP的一些术语,大家好好把这些理解一下,一定要把这些概念理清楚,后面才不会混淆。今天先带大家简单认识一下AOP,下篇带大家做一些例子,从而更亲近的认识AOP。

JavaWeb_(Spring框架)SpringAOP面向切面编程的更多相关文章

  1. Spring框架 AOP面向切面编程(转)

    一.前言 在以前的项目中,很少去关注spring aop的具体实现与理论,只是简单了解了一下什么是aop具体怎么用,看到了一篇博文写得还不错,就转载来学习一下,博文地址:http://www.cnbl ...

  2. Spring框架——AOP面向切面编程

    简介 AOP练习 使用动态代理解决问题 Spring AOP 用AspectJ注解声明切面 前置后置通知 利用方法签名编写AspectJ切入点表达式 指定切面的优先级 基于XML的配置声明切面 Spr ...

  3. 详解Spring框架AOP(面向切面编程)

    最近在学习AOP,之前一直很不明白,什么是AOP?为什么要使用AOP,它有什么作用?学完之后有一点小小的感触和自己的理解,所以在这里呢就跟大家一起分享一下 AOP(Aspect-Oriented Pr ...

  4. Spring框架系列(4) - 深入浅出Spring核心之面向切面编程(AOP)

    在Spring基础 - Spring简单例子引入Spring的核心中向你展示了AOP的基础含义,同时以此发散了一些AOP相关知识点; 本节将在此基础上进一步解读AOP的含义以及AOP的使用方式.@pd ...

  5. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring AOP(面向切面编程)

    面向切面编程(AOP)和面向对象编程(OOP)类似,也是一种编程模式.Spring AOP 是基于 AOP 编程模式的一个框架,它的使用有效减少了系统间的重复代码,达到了模块间的松耦合目的. AOP ...

  6. Spring 08: AOP面向切面编程 + 手写AOP框架

    核心解读 AOP:Aspect Oriented Programming,面向切面编程 核心1:将公共的,通用的,重复的代码单独开发,在需要时反织回去 核心2:面向接口编程,即设置接口类型的变量,传入 ...

  7. Spring:AOP面向切面编程

    AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果. AOP是软件开发思想阶段性的产物,我们比较熟悉面向过程O ...

  8. 03-spring框架—— AOP 面向切面编程

    3.1 动态代理 动态代理是指,程序在整个运行过程中根本就不存在目标类的代理类,目标对象的代理对象只是由代理生成工具(不是真实定义的类)在程序运行时由 JVM 根据反射等机制动态生成的.代理对象与目标 ...

  9. spring:AOP面向切面编程02

    参考: https://blog.csdn.net/jeffleo/article/details/54136904 一.AOP的核心概念AOP(Aspect Oriented Programming ...

随机推荐

  1. spring-boot-plus CORS跨域处理

    CORS跨域处理 CORS:Cross-Origin Resource Sharing CORS是一种允许当前域(domain)的资源(比如html/js/web service)被其他域(domai ...

  2. 简单分析FactoryBean

    1. 什么是FactoryBean FactoryBean本质上是一种Bean,只是它可以产生其他的Bean,比较特殊.在上下文getBean的时候,如果传入FactoryBean的名称,得到的是Fa ...

  3. Springboot 使用pageHelper实现分页查询

    本文链接:https://blog.csdn.net/qq_35387940/article/details/91530234

  4. 【php设计模式】模板模式

    定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤. 通俗点的理解就是 :完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同 ...

  5. 【转】Fetch超时设置和终止请求

    原文链接:https://www.cnblogs.com/yfrs/p/fetch.html 1.基本使用 Fetch 是一个新的端获取资源的接口,用于替换笨重繁琐XMLHttpRequest.它有了 ...

  6. @media screen媒体查询实现页面自适应布局

    @media screen and (min-width:1200px){ //大于等于1200px才会进入 }   @media screen and (max-width:375px) { //小 ...

  7. 安卓开发之利用XmlSerializer生成XML文件

    package com.lidaochen.phonecall; import android.net.Uri; import android.os.Environment; import andro ...

  8. wordpress程序打开太慢的解决方案(一步搞定)

    周末两天没有打开自己的赵一鸣随笔博客,今天访问了一下,打开速度太慢了,看看浏览器栏目,网站标题已经显示出来了,但是网页却是一片空白,什么都没有,刚开始以为是我们公司网速的问题,就没有特别注意这件事情. ...

  9. RobHess的SIFT代码解析步骤四

    平台:win10 x64 +VS 2015专业版 +opencv-2.4.11 + gtk_-bundle_2.24.10_win32 主要参考:1.代码:RobHess的SIFT源码 2.书:王永明 ...

  10. PPP协议解析一

    转:http://blog.csdn.net/yangzheng_yz/article/details/11526475 在网上搜集了一些有关PPP的资料,整理了一下,不能说是原创,仅供大家学习研究. ...