该例子结合Spring(十六)这篇文章来看,本人觉得其实Spring(十六)写的也是拦截器,都是AOP面向切面编程的知识点:
今天在SSH中用到spring拦截器,所以先在一个只有spring的测试项目中写了一个拦截器的一个简单例子,
结果还遇到了一点小错误,一下就按时间发展顺序记述.
Purview接口.
package aop;
public interface Purview {
void checkLogin();
}
PurviesImpl类,Purview接口的实现类.
package aop;
public class PurviewImpl implements Purview {
public void checkLogin() {
System.out.println("This is checkLogin method!");
}
}
/**
* PurviewAdvice类,拦截器类,可以实现MethodBeforeAdvice, *AfterReturningAdvice, ThrowsAdvice接口,这里实现了MethodBeforeAdvice接口
*/
package aop;
import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
public class PurviewAdvice implements MethodBeforeAdvice {
public void before(Method arg0, Object[] arg1, Object arg2)
throws Throwable {
System.out.println("This is before method!");
}
}
//Test类,测试类.
package aop;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
// TODO 自动生成方法存根
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"applicationContext.xml");
PurviewImpl purviewImpl = (PurviewImpl) ctx.getBean("purviewImpl");
purviewImpl.checkLogin();
}
}
applicationContext.xml配置文件.
<bean id="purviewImpl" class="aop.PurviewImpl"></bean>
<bean id="purviewAdvice" class="aop.PurviewAdvice"></bean>
<bean id="purviewAdvisor"
class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice">
<ref local="purviewAdvice" />
</property>
<property name="patterns">
<list>
<value>.*checkLogin.*</value>
</list>
</property>
</bean>
<bean id="autoproxyaop"
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<value>purviewImpl</value> //需要拦截的javaBean
</property>
<property name="interceptorNames">
<list>
<value>purviewAdvisor</value>//拦截器列表,可以配置多个拦截器
</list>
</property>
</bean>
运行结果报错,错误信息为:
Exception in thread "main" java.lang.ClassCastException: $Proxy1
at aop.Test.main(Test.java:34)
将Test类中
PurviewImpl purviewImpl = (PurviewImpl) ctx.getBean("purviewImpl");
修改为
Purview purviewImpl = (Purview) ctx.getBean("purviewImpl");
程序运行结果为:
This is before method!
This is checkLogin method!
至此拦截器使用成功!
总结:用spring得到bean的时候,若该类实现了接口,则返回其接口类型的实例,
若直接返回该实现类类型的实例则会报错,错误信息如上所述.
分享到:
相关推荐
在本次的“spring MVC(新增拦截器demo)”项目中,我们将重点探讨如何在Spring MVC中添加拦截器来实现对请求的预处理和后处理。 拦截器在Spring MVC中扮演着关键的角色,它们可以用来执行一些全局性的任务,如日志...
在Spring Boot应用中,登录拦截器是一个至关重要的组件,它用于保护特定的Web资源,确保只有经过身份验证的用户才能访问。Spring Boot结合了Spring MVC框架,提供了方便的方式来实现这样的拦截器。本篇文章将深入...
在Spring Boot中注册拦截器,我们需要在配置类中使用`@EnableAspectJAutoProxy`开启AOP代理,并通过`@Bean`注解声明拦截器实例。然后,使用`@Around`注解定义切点,即拦截所有的JPA操作。 在实际开发中,为了使分库...
本篇文章将详细探讨如何在Spring Boot中添加和使用拦截器来实现登录拦截。 首先,我们需要了解Spring Boot中的拦截器是如何工作的。在Spring MVC框架中,拦截器是基于AOP(面向切面编程)的概念实现的。我们可以...
下面将详细探讨Spring拦截器的使用以及高级参数绑定和Controller返回值的相关知识。 首先,我们创建一个Spring拦截器需要实现HandlerInterceptor接口或继承HandlerInterceptorAdapter抽象类。以下是一个简单的拦截...
在深入研究Flex-Spring拦截器时,理解Spring AOP的核心概念和AMF的工作原理是至关重要的。通过这样的集成,开发者可以在保持Flex客户端的灵活性和交互性的同时,利用Spring的强大功能来处理复杂的业务逻辑和系统管理...
标题中的“spring配置JSON拦截器VIEW”指的是在Spring框架中设置JSON数据的处理方式,特别是通过拦截器(Interceptor)来优化视图层(View)的响应。在Web开发中,拦截器是一种常用的机制,用于在请求被实际处理之前...
而Spring拦截器则是实现AOP的一种方式,它类似于Java的Servlet过滤器,可以在方法调用前后执行自定义的操作。 AOP拦截器在Spring中主要通过`HandlerInterceptor`接口或者`@AspectJ`注解来实现。下面我们将详细探讨...
在Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,用于在请求被控制器处理之前或之后执行特定的逻辑。它们可以用来实现通用的功能,如权限验证、日志记录、性能统计等,避免在每个控制器方法中重复编写...
在Spring Boot应用中,拦截器(Interceptor)是Spring MVC框架的一部分,用于在请求处理之前、之后或在实际处理过程中执行一些预定义的任务。这通常包括权限检查、日志记录、性能监控等。自定义拦截器可以帮助我们更...
在本文中,我们将深入探讨如何在Spring Boot应用中使用拦截器(Interceptor)和过滤器(Filter)来处理用户的登录session。这两个组件都是Spring框架的重要部分,它们在处理HTTP请求和响应时发挥着关键作用。 首先...
Spring 拦截器是 Spring 框架中一个非常重要的组件,主要用于处理请求和响应,实现业务逻辑之前和之后的预处理和后处理。它为开发者提供了在 MVC 模式下实现统一处理机制的机会,比如权限验证、日志记录、性能监控等...
3. **Spring集成**:在Spring3.2中,我们可以使用`<cxf:bus>`和`<cxf:interceptor>`标签将自定义拦截器注册到CXF Bus中。这样,Spring容器会管理拦截器的生命周期,并在需要时注入其他依赖。 4. **拦截器链**:CXF...
在`intercept`方法中,我们实现了类似Spring拦截器的功能,调用`preHandle`和`postHandle`方法,并根据`preHandle`的结果决定是否执行目标方法。 最后,`afterCompletion`方法的调用通常需要手动管理,因为它涉及到...
在本文中,我们将深入探讨如何实现Struts2与Spring的集成,以及利用拦截器来增强应用的功能。 首先,Struts2 是一个基于MVC设计模式的开源Web框架,它提供了强大的控制器层,使得开发者可以更方便地处理HTTP请求和...
这将设置Spring Web相关类的日志级别为DEBUG,以便我们能看到拦截器的执行过程。 启动类通常会包含`@SpringBootApplication`注解,该注解包含了`@EnableAutoConfiguration`,`@ComponentScan`和`@...
### Spring MVC 拦截器:深入理解与实践 #### 一、概念解析 Spring MVC 框架中的拦截器(Interceptor)是一种重要的组件,它主要用于处理请求与响应的生命周期,提供了一种灵活的方式来实现诸如权限检查、日志记录...
接下来,描述中提到了"MethodInterceptor",这是Spring AOP中的一种拦截器,用于拦截并修改代理对象的方法调用。不同于HandlerInterceptor,MethodInterceptor是基于代理的AOP,适用于拦截任何由Spring管理的对象,...
初学者很容易将 Spring MVC 拦截器 和 Spring Cloud OpenFeign 拦截器搞混,误以为OpenFeign拦截器就是SpringMVC拦截器:Spring MVC拦截器发生在客户端 和 服务端之间,在客户端向服务端发送请求时进行拦截处理。...
本项目是一个基于Spring 4的Spring MVC实现,内含登录功能和拦截器,可以直接运行,为开发者提供了一个快速开发的基础模板。 首先,让我们详细了解一下Spring MVC的核心概念: 1. **DispatcherServlet**:它是...