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拦截器实现日志管理实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
springboot spring aop 拦截器 注解方式实现脱敏(涉及到:pom.xml -->application.properties --->启动类-->拦截器)
NULL 博文链接:https://flyer2010.iteye.com/blog/749389
1.针对SpringMVC注解的配置,可起到入门的作用 2.Spring+JdbcTemplate事物管理 3.Spring+Hibernate事物管理 4.Spring实现DWR注解方式的应用配置 ...6.Spring通过拦截器实现防止重复提交实例 对学习,会起到非常好的效果
主要介绍了SpringBoot拦截器原理解析及使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
本篇文章主要介绍了SpringBoot拦截器实现对404和500等错误的拦截,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
主要介绍了详解Spring MVC拦截器实现session控制,使用session监听,重复登录后,强制之前登录的session过期。有兴趣的可以了解一下。
spring+springMVC+mybatis拦截器分页
本文根据java代理实现CXF拦截器异常时只能进入fault拦截器而不能继续向下执行的问题。 利用java代理让RMI具有拦截器的功能。
spring boot简单应用,配置yml文件,实现mysql数据库的连接,对数据进行增删改查,另有登录拦截器。
基于spring4的springmvc项目,自带登录和拦截器,可直接运行
本篇文章主要介绍了详解Spring AOP 拦截器的基本实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Spring Boot+Redis+拦截器+自定义Annotation如何实现接口自动幂等.docx
主要介绍了Spring mvc拦截器实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Spring源代码解析(七):Spring_AOP中对拦截器调用的实现.doc
内含有mybatis 拦截器实现的分页代码,spring 的事务和aop 测试、和反射工具类
15.1.1 拦截器的定义 要使用Spring MVC中的拦截器,就需要对拦截器类进行定义和配置。通常拦截器类可以通过两种方式来定义。 通过实现HandlerInterceptor接口,或继承HandlerInterceptor接口的实现类(如...
该压缩包实现了利用过滤器或者拦截器对登录信息进行验证跳转登陆页的功能,利用的是SpringBoot和thymeleaf,使用前请先看使用说明
主要介绍了Spring MVC 拦截器实现登录,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要给大家介绍了关于Spring boot拦截器实现IP黑名单的完整步骤,需要的朋友可以参考下