原文地址: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的拦截器进行更加深入的研究。
相关推荐
3. **AOP(面向切面编程)**:Spring的AOP支持可以帮助开发者定义拦截器,实现在不修改原有代码的情况下,对特定操作进行增强,如日志记录、事务管理等。 4. **模型驱动**:Spring的ModelAndView对象可以用来封装...
在Spring框架中,拦截器(Interceptor)是一种强大的...在实际开发中,可以利用Spring的拦截器实现诸如权限控制、日志记录等功能,而高级参数绑定和灵活的Controller返回值处理则极大地提高了开发效率和代码的可读性。
在本案例中,我们将探讨如何使用注解来实现拦截器,用于数据脱敏,这是保护敏感信息的一种常见方法。数据脱敏是指在展示或传输数据时,将敏感信息替换或隐藏,以确保隐私。 首先,让我们从`pom.xml`文件开始。在...
Spring源代码解析7:Spring AOP中对拦截器调用的实现 .doc Spring源代码解析8:Spring驱动Hibernate的实现.doc Spring源代码解析9:Spring Acegi框架鉴权的实现.doc Spring源代码解析10:Spring Acegi框架授权的实现...
拦截器通常通过实现HandlerInterceptor接口来完成拦截逻辑,这个接口提供了三个主要方法:preHandle、postHandle和afterCompletion。 - preHandle方法在请求处理之前进行调用,也就是Controller方法被调用之前。...
在深入研究Flex-Spring拦截器时,理解Spring AOP的核心概念和AMF的工作原理是至关重要的。通过这样的集成,开发者可以在保持Flex客户端的灵活性和交互性的同时,利用Spring的强大功能来处理复杂的业务逻辑和系统管理...
总结起来,Spring Boot中的拦截器是增强应用程序功能的重要工具,通过实现或扩展拦截器接口,我们可以灵活地控制请求处理流程,实现自定义逻辑,如权限验证、日志记录等。在实际项目中,正确配置和使用拦截器能够...
而Spring拦截器则是实现AOP的一种方式,它类似于Java的Servlet过滤器,可以在方法调用前后执行自定义的操作。 AOP拦截器在Spring中主要通过`HandlerInterceptor`接口或者`@AspectJ`注解来实现。下面我们将详细探讨...
Spring 拦截器是 Spring 框架中一个非常重要的组件,主要用于处理请求和响应,实现业务逻辑之前和之后的预处理和后处理。它为开发者提供了在 MVC 模式下实现统一处理机制的机会,比如权限验证、日志记录、性能监控等...
在本文中,我们将深入探讨如何实现Struts2与Spring的集成,以及利用拦截器来增强应用的功能。 首先,Struts2 是一个基于MVC设计模式的开源Web框架,它提供了强大的控制器层,使得开发者可以更方便地处理HTTP请求和...
`saif-0.1.jar`可能包含自定义的拦截器实现,这些拦截器可以扩展Struts的默认行为。例如,它可能包含登录验证、事务管理、性能监控等功能。开发者可以通过在Struts配置文件中声明这些拦截器,将它们插入到Action执行...
本文将详细介绍如何在Spring Boot中实现拦截器以进行权限校验和登录验证,通过一个简单的Demo来阐述整个过程。 首先,我们需要创建一个自定义的拦截器类。这个类通常会继承`HandlerInterceptorAdapter`,这是一个...
以上步骤展示了如何使用Spring Boot中的自定义拦截器和自定义注解来实现对特定方法的选择性拦截。这种机制可以非常灵活地控制哪些请求需要经过额外的验证或处理,对于构建安全可控的应用程序来说非常重要。
在本文中,我们将深入探讨Spring Boot中的拦截器,了解其工作原理、如何实现以及实际应用。 首先,Spring MVC是Spring Boot的核心组件,负责处理HTTP请求。拦截器在Spring MVC中扮演着关键角色,它允许我们在请求被...
拦截器部分,`saif-spring.jar`可能提供了与Spring AOP相结合的拦截器实现,使得在处理请求时可以利用Spring的AOP功能进行事务管理和权限控制等。 在具体使用`saif-spring.jar`时,首先需要将其添加到项目的类路径...
Spring Boot结合了Spring MVC框架,提供了方便的方式来实现这样的拦截器。本篇文章将深入探讨如何使用Spring Boot、JPA连接数据库以及设置登录拦截器来拦截指定路径。 首先,我们需要理解Spring Boot中的JPA(Java ...
在Spring MVC中,拦截器是基于Java的动态代理机制实现的,它遵循HandlerInterceptor接口的规范。该接口主要有三个方法: 1. `preHandle(HttpServletRequest request, HttpServletResponse response, Object handler...
本例提供了一个简单的AOP拦截器实现,我们可以从这个基础出发,深入理解和探讨AOP的核心概念、工作原理以及其在实际开发中的应用。 首先,AOP的主要目标是解决程序中的横切关注点,如日志记录、事务管理、性能监控...
1.针对SpringMVC注解的配置,可起到入门的作用 2.Spring+JdbcTemplate事物管理 3.Spring+Hibernate事物管理 4.Spring实现DWR注解方式的应用配置 ...6.Spring通过拦截器实现防止重复提交实例 对学习,会起到非常好的效果
1. **DispatcherServlet**:作为Spring MVC的核心,`DispatcherServlet`负责拦截所有到达的HTTP请求,然后根据请求映射找到合适的处理器(控制器)进行处理。 2. **控制器**:开发者可以定义控制器类,这些类处理...