原文地址:http://blog.csdn.net/lemonfamily/article/details/1498246
spring 拦截器是spring AOP体系下的一个重要的子功能。它类似于web中的filter,但又比filter灵活,强大得多。许多AOP框架,包括Spring,都是以拦截器做通知模型, 并维护一个以连接点为中心的拦截器链。(见Spring Framework 开发参考手册第6章),拦截功能是spring AOP实现面向切面编程的一个亮点,我们这里通过一个示例来看看如何使用拦截功能的:
这个例子是通过拦截指定的bean,在外部调用他们其中的方法被之前将触发拦截器。
首先,编写一个个拦截器:SpringAOPInterceptor.java
public class SpringAOPInterceptor implements MethodBeforeAdvice {
public void before(Method method, Object[] args, Object target)
throws Throwable {
System.out.println("The Interceptor method name is: "
+ method.getDeclaringClass().getName() + "."
+ method.getName());
String value = "";
for(int i=0;ilength;i++){
value += args[i].toString()+"&";
}
System.out.println( "The method parames is:" +value);
System.out.println( "The target class is:" + target.getClass().getName());
}
该拦截器使用的是前置通知(before advice),它可以在该切入点也就是调用该方法前执行自定义的行为,但不能在切入点处理完返回过程中执行拦截,也就没办法改变切入点的返回值.如果想使用其他切入点进行拦截,可以查看org.springframework.aop包(Spring的通知API)下的其他类.
随后,我们可以编写几个需要被拦截的类,这里,我不再提供了,大家随便写个test类吧^_^.
最后,需要把拦截器注册到bean容器(applicationcontext.xml)内.并把要拦截的bean一起注入到自动代理bean定义类org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator中.
例子如下:
<bean name="logger" class="com.comwave.sc.form.ao010.test.SpringAOPInterceptor"method="dispose">
<bean name= "loggingAutoProxy"
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name= "beanNames" >
<value>userDAO</value><!-- 在这里可以声明多个需要拦截的bean -->
</property>
<property name= "interceptorNames" >
<list>
<value>logger</value><!-- 同样,在这里可以声明多个拦截器,注意次序前后 -->
</list>
</property>
</bean>
拦截器在spring中一般都是用来类似过滤器的功能,如日志处理、编码转换、权限检查等。以后仍会对spring的拦截器进行更加深入的研究。
相关推荐
Spring源代码解析7:Spring AOP中对拦截器调用的实现 .doc Spring源代码解析8:Spring驱动Hibernate的实现.doc Spring源代码解析9:Spring Acegi框架鉴权的实现.doc Spring源代码解析10:Spring Acegi框架授权的实现...
1.针对SpringMVC注解的配置,可起到入门的作用 2.Spring+JdbcTemplate事物管理 3.Spring+Hibernate事物管理 4.Spring实现DWR注解方式的应用配置 ...6.Spring通过拦截器实现防止重复提交实例 对学习,会起到非常好的效果
Spring源代码解析(七):Spring_AOP中对拦截器调用的实现.doc
springboot spring aop 拦截器 注解方式实现脱敏(涉及到:pom.xml -->application.properties --->启动类-->拦截器)
14.1. AOP联盟 (MethodInvocation) 安全拦截器 14.1.1. 精确的 MethodSecurityIterceptor 配置 14.2. AspectJ (JoinPoint) 安全拦截器 15. 基于表达式的权限控制 15.1. 概述 15.1.1. 常用内建表达式 ...
NULL 博文链接:https://flyer2010.iteye.com/blog/749389
saif-spring.jar一个 需要的拿去 适用于struts1 实现了拦截器功能 有老项目的下载
Spring源代码解析(七):Spring AOP中对拦截器调用的实现.doc Spring源代码解析(八):Spring驱动Hibernate的实现.doc Spring源代码解析(九):Spring Acegi框架鉴权的实现.doc Spring源代码解析(十):Spring ...
15.1.1 拦截器的定义 要使用Spring MVC中的拦截器,就需要对拦截器类进行定义和配置。通常拦截器类可以通过两种方式来定义。 通过实现HandlerInterceptor接口,或继承HandlerInterceptor接口的实现类(如...
1. springmvc 中的拦截器是由实现 HandlerInterceptor 或者继承 HandlerInterceptorAdapter 来实现的。 2. 自定义实现一个拦截器的步骤: a). 定义一个实现 HandlerInterceptor 接口 的类
主要介绍了SpringBoot拦截器原理解析及使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
利用aop进行动态的数据源切换
14.1. AOP联盟 (MethodInvocation) 安全拦截器 14.1.1. 精确的 MethodSecurityIterceptor 配置 14.2. AspectJ (JoinPoint) 安全拦截器 15. 基于表达式的权限控制 15.1. 概述 15.1.1. 常用内建表达式 15.2. Web...
Spring Boot+Redis+拦截器+自定义Annotation如何实现接口自动幂等.docx
spring+springMVC+mybatis拦截器分页
主要介绍了详解Spring MVC拦截器实现session控制,使用session监听,重复登录后,强制之前登录的session过期。有兴趣的可以了解一下。
本篇文章主要介绍了SpringBoot拦截器实现对404和500等错误的拦截,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
本文根据java代理实现CXF拦截器异常时只能进入fault拦截器而不能继续向下执行的问题。 利用java代理让RMI具有拦截器的功能。
spring boot简单应用,配置yml文件,实现mysql数据库的连接,对数据进行增删改查,另有登录拦截器。
本篇文章主要介绍了使用spring拦截器实现日志管理实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。