文档章节

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
海淀
程序员
私信 提问
Spring Boot学习笔记

RabbitMQ RabbitMQ 安装 linux安装RabbitMQ详细教程 Ubuntu 16.04 RabbitMq 安装与运行(安装篇) ubantu安装rabbitMQ步骤 多线程 Spring @transactional注解和synchronized同步锁同时使用不...

OSC_fly
07/26
0
0
Springsecurity学习

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

克虏伯
09/03
0
0
详解SpringMVC中使用Interceptor拦截器

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

微wx笑
05/11
0
0
Spring MVC拦截器实现分析

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

姚君
2014/04/18
0
0
SpringMVC中使用Interceptor拦截器

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

凯文加内特
2015/05/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

图片无限轮播

<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, max......

shawnDream
7分钟前
0
0
js 在==时,则会有一些让人难以理解的陷阱

在==时,则会有一些让人难以理解的陷阱。 (function () { var undefined; undefined == null; // true 1 == true; //true 2 == true; // false 0 == false; // true 0 == ''; // true NaN ==......

之渊
9分钟前
1
0
前后端分离之JWT用户认证

参考资料 1、前后端分离之JWT用户认证

哎小艾
13分钟前
0
0
TiDB 在量化派风控系统中的应用

作者:朱劲松,量化派研发中心系统架构师,主要参与了基础组件开发、API Gateway 等项目,现在致力于公司风控系统相关业务的架构设计和研发。 一、公司简介 量化派(QuantGroup)创办于 2014...

TiDB
16分钟前
0
0
Spring Cloud Feign 异常处理

问题 最近在项目开发中,使用 Feign 调用服务,当触发熔断机制时,遇到了以下问题: 异常信息形如:TestService#addRecord(ParamVO) failed and no fallback available.; 获取不到服务提供方...

xiaomin0322
28分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部