文档章节

Spring学习笔记:关于Interceptor

猪刚烈
 猪刚烈
发布于 2014/10/12 11:48
字数 440
阅读 25
收藏 1

  我们知道在Spring中一共提供了四种Advice用来支持对方法调用时施加的不同行为.它们包括:

BeforeAdvice:具体接口:MethodBeforeAdvice 在目标方法调用之前调用的Advice

AfterAdvice:具体接口:AfterReturningAdvice 在目标方法调用并返回之后调用的Advice

AroundAdvice:具休接口:MethodInterceptor 在目标方法的整个执行前后有效,并且有能力控制目标方法的执行

ThrowsAdvice:具体接口:ThrowsAdvice 在目标方法抛出异常时调用的Advice

在以上四种Advice中最为特别的就是MethodInterceptor:方法拦截器.它的特别之处在于:首先他所在的包并不Srping中的包而是:org.aopalliance.intercept包.即MethodInterceptor实现了AOP联盟接口,这一点保证了它较之其他的Advice更具有通用性,因为它可以在任何基于AOP联盟接口实现的AOP系统中使用.第二点也就是其最为突出的一点就是它所具有的其他Advice所不能匹敌的功能:在目标方法的整个执行前后有效,并且有能力控制目标方法的执行!以下是一段具体代码(引自Spring in Action iist3.5.)

package com.springinaction.chapter03.store;
import java.util.HashSet;
import java.util.Set;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
public class OnePerCustomerInterceptor implements MethodInterceptor {
private Set customers = new HashSet();
public Object invoke(MethodInvocation invocation)
throws Throwable {
Customer customer = (Customer) invocation.getArguments()[0];
if (customers.contains(customer)) {
throw new KwikEMartException("One per customer.");
}
Object squishee = invocation.proceed(); //调用目标方法
customers.add(customer);
return squishee;
}
}

在MethodInterceptor中有一个invoke方法,它们有一个MethodInvocation参数invocation,MethodInterceptor是能通过invocation的proceed方法来执行目标方法的.在显式地调用这个方法时,我们可以在其之前和之后做一些相关操作,实现beforeAdvice和AfterAdvice的功能.

本文转载自:http://blog.csdn.net/bluishglc/article/details/1664889

共有 人打赏支持
猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
私信 提问
Springsecurity学习

先上一张图,如下图1,此图来自于《Pro Spring security》的Chapter3。我觉得原文说的很好,建议读者看该书,内容是"Spring Security’s interception model of security applies to two mai...

克虏伯
09/03
0
0
Spring Boot学习笔记

多线程 Spring @transactional注解和synchronized同步锁同时使用不能同步的问题 Synchronized和@Transactional 使用时,同步失效。 属性复制 spring的BeanUtils.copyProperties用法 文件上传...

OSC_fly
07/26
0
0
详解SpringMVC中使用Interceptor拦截器

SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判...

微wx笑
05/11
0
0
深入解析Spring架构与设计原理-AOP

关于AOP的个人理解 AOP联盟定义的AOP体系结构把与AOP相关的概念大致分为了由高到低、从使用到实现的三个层次。关于这个体系结构,个人的理解是这样的,从上往下,最高层是语言和开发环境,在...

Java小铺
08/27
0
0
Spring MVC拦截器实现分析

一、Servlet Filter与Spring interceptor的执行顺序 Filter有顺序吗?我们怎么控制filter的执行顺序。通过Tomcat的代码分析,servlet在Filter执行完成后才调用,如有多个filter怎么控制执行顺...

姚君
2014/04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 程序员左轮轮盘赌注

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享Bon Jovi的单曲《You Give Love a Bad Name》 《You Give Love a Bad Name》- Bon Jovi 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
43分钟前
669
15
oracle 用户密码过期-ORA-28001: 口令已经失效

oracle 用户密码过期-ORA-28001: 口令已经失效 操作步骤: [BEGIN] 2018-10-23 17:25:43Last login: Mon Sep 3 08:46:32 2018 from 10.2.202.12#登陆数据库#(1)在命令窗口中输入:...

诺岚
47分钟前
2
0
[转载]Yarn作业提交流程

1、yarn简述 yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式操作系统平台,而mapreduce等运算程序则相当于运行与操作系统之上的应用程序。yarn在hadoop2.x系列...

hnairdb
51分钟前
0
0
WebSocketdemo

WebSocket是html5提供的一种在单个tcp连接上进行全双工通讯的协议。 Http协议是无状态、无连接的、单向的应用层协议,采用了请求响应模型,通信请求智能有客户端发起,服务端对请求做出应答处...

qiang123
58分钟前
1
0
谷歌推迟公布Google+漏洞遭参议员不满

参议院商务委员会主席约翰·图恩和另外两位参议员杰瑞·莫兰和罗杰·维克发出信函,要求谷歌解释推迟披露此问题的原因。信中称:“谷歌如果要保持或重获用户对其服务的信任,就必须在公众和立...

linuxCool
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部