一、AOP概念回顾

  AOP是Aspect-Oriented Programming(面向方面编程)的简称,

虽然可以利用面向对象的方法可以很好地组织代码,也可以通过继承关系实现代码重用,但是程序中总是会出现一些重复的代码,而且不太方便使用继承的方法把它们重用和管理起来。它们的功能重复并且需要作用在不同的地方,虽然可以对这些代码做一些简单的封装,使之成为一些公共函数,但是在这种显示的调用中,使用它们并不是很方便。

在使用AOP后,不仅可以将这些重复的代码抽取出来单独维护,比起传统手段中,直接调用公用模块之外,通过AOP提出横切的概念,把模块功能证交化的同时,也在此基础上提供了一系列横切的灵活实现。

AOP联盟的网站上提到了以下的AOP技术:

  • AspectJ:源代码和字节码基本的编织器,用户需要使用不同于java的新语言。
  • AspectWerkz:AOP框架,使用字节码动态编织和XML配置。
  • JBoss-AOP:基于拦截器和元数据的AOP框架,运行在JBoss应用服务器上。
  • BCEL(Byte-Code Engineering Library):Java字节码操作类库
  • Javassist:java字节码操作类库;

对应于现有的AOP实现方案,AOP联盟对它们进行了一定程度的抽象,从而定义出AOP体系结构,结合这个体系结构去了解AOP技术,对我们理解AOP的概念是非常有帮助的,这个AOP体系结构如下:

  在Spring AOP中,是使用java语言来实现增强对象与切面增强应用的,并为这两者的结合提供了配置环境。

  • 对于编织配置,可以使用IoC容器来完成。
  • 对于POJO对象的配置,本来就是Spring的核心IoC容器的强项。

因此,对于使用Spring的AOP开发而言,使用POJO就能完成AOP任务。

但是,对于其他的AOP实现方案,可能需要使用特定的实现语言、配置环境甚至是特定的编译环境。

spring--处理器拦截器详解——跟着开涛学SpringMVC的更多相关文章

  1. 【转】跟着开涛学SpringMVC

    跟着开涛学SpringMVC 第一章源代码下载 博客分类: 跟开涛学SpringMVC 跟开涛学SpringMVC  源代码请到附件中下载. 其他下载: 跟着开涛学SpringMVC 第一章源代码下载 ...

  2. Struts2 之 modelDriven & prepare 拦截器详解

    struts2 ModelDriven & Prepareable 拦截器 前面对于 Struts2 的开发环境的搭建.配置文件以及 Struts2 的值栈都已经进行过叙述了!这次博文我们讲解 ...

  3. [转]SpringMVC拦截器详解[附带源码分析]

      目录 前言 重要接口及类介绍 源码分析 拦截器的配置 编写自定义的拦截器 总结 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:ht ...

  4. Springboot 过滤器和拦截器详解及使用场景

    一.过滤器和拦截器的区别 1.过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的.请求结束返回也是,是在servlet处理完后,返回给前端之前. 2.拦截 ...

  5. SpringMVC拦截器详解[附带源码分析]

    目录 前言 重要接口及类介绍 源码分析 拦截器的配置 编写自定义的拦截器 总结 总结 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:h ...

  6. SpringMVC拦截器详解

    拦截器是每个Web框架必备的功能,也是个老生常谈的主题了. 本文将分析SpringMVC的拦截器功能是如何设计的,让读者了解该功能设计的原理. 重要接口及类介绍 1. HandlerExecution ...

  7. SpringMVC拦截器详解[附带源码分析](转)

    本文转自http://www.cnblogs.com/fangjian0423/p/springMVC-interceptor.html 感谢作者 目录 前言 重要接口及类介绍 源码分析 拦截器的配置 ...

  8. struts2 18拦截器详解(七)

    ChainingInterceptor 该拦截器处于defaultStack第六的位置,其主要功能是复制值栈(ValueStack)中的所有对象的所有属性到当前正在执行的Action中,如果说Valu ...

  9. AspectCore动态代理中的拦截器详解(一)

    前言 在上一篇文章使用AspectCore动态代理中,简单说明了AspectCore.DynamicProxy的使用方式,由于介绍的比较浅显,也有不少同学留言询问拦截器的配置,那么在这篇文章中,我们来 ...

随机推荐

  1. c#抽象工厂类

    抽象工厂类的结构如下: 工厂 a=new 1工厂 抽象类A aa=a.createA() aa.create()==类A1.create() 抽象类B bb=a.createB() bb.get()= ...

  2. css部分基础归纳--学习笔记

    (1)css不区别大小写: (2)颜色值:颜色值可以写成RGB格式,如:color:rgb(255,100,0),也可以写成十六进制格式,如:color:#ff0000.如果十六进制的值是成对重复的可 ...

  3. IT书籍下载汇总--持续更新

    本书单由北北分享,并持续更新,请将该地址加入收藏夹:北北的书单 .badge{float:right;}.list-group-item > .badge + .badge{margin-rig ...

  4. Python环境搭建(windows)

    Python环境搭建(windows) Python简介 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),是一种面向对象.直译式计算机编程语言,具有近二十年的发展历史,成 ...

  5. 几种更新(Update语句)查询的方法【转】

    正 文: 数据库更新就一种方法Update,其标准格式:Update 表名 set 字段=值 where 条件不过根据数据的来源不同,还是有所区别的:  1.从外部输入这种比较简单例:update t ...

  6. FolderBrowserDialog组件选择文件夹

    1.选择路径 this.folderBrowserDialog1.ShowDialog(); if (this.folderBrowserDialog1.ShowDialog() == DialogR ...

  7. LCD显示方向

    一.ILI9341内存到显示地址的映射 本文只讨论“正常显示”,不讨论“垂直滚动显示”模式. 可以看到物理内存被两个指针访问,行指针和列指针,行指针范围从000h到013Fh,列指针范围为0000h到 ...

  8. 10个最好的 jQuery 视频插件(转)

    在这篇文章中已经收集了 10 个最佳的 jQuery 视频插件,帮助开发人员容易地实现网站播放影片功能.可以显示视频和视频播放列表. 1. Bigvideo.js BigVideo.js 是一个 jQ ...

  9. iOS 页面间传值 之 属性传值,代理传值

    手机 APP 运行,不同页面间传值是必不可少,传值的方式有很多(方法传值,属性传值,代理传值,单例传值) ,这里主要总结下属性传值和代理传值. 属性传值:属性传值是最简单,也是最常见的一种传值方式,但 ...

  10. C#.NET连接mysql方法

    C#访问MySQL数据库的方法 (1)首先需要下载C#访问MySQL数据库的ADO.NET驱动程序 下载地址为: http://dev.mysql.com/downloads/connector/ne ...