`
wlh269
  • 浏览: 458145 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring(十七) Spring 拦截器

阅读更多
该例子结合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的时候,若该类实现了接口,则返回其接口类型的实例,

若直接返回该实现类类型的实例则会报错,错误信息如上所述.
分享到:
评论
1 楼 se7en8974 2010-11-29  
不知道拦截flex的remoteobject调用的javabean可否,感觉应该可行。
Spring MVC的handler interceptor就没法做到拦截普通javabean

相关推荐

    spring MVC(新增拦截器demo)

    在本次的“spring MVC(新增拦截器demo)”项目中,我们将重点探讨如何在Spring MVC中添加拦截器来实现对请求的预处理和后处理。 拦截器在Spring MVC中扮演着关键的角色,它们可以用来执行一些全局性的任务,如日志...

    spring boot 登录拦截器

    在Spring Boot应用中,登录拦截器是一个至关重要的组件,它用于保护特定的Web资源,确保只有经过身份验证的用户才能访问。Spring Boot结合了Spring MVC框架,提供了方便的方式来实现这样的拦截器。本篇文章将深入...

    java + spring boot +jpa 拦截器分库分表demo

    在Spring Boot中注册拦截器,我们需要在配置类中使用`@EnableAspectJAutoProxy`开启AOP代理,并通过`@Bean`注解声明拦截器实例。然后,使用`@Around`注解定义切点,即拦截所有的JPA操作。 在实际开发中,为了使分库...

    spring-boot添加 拦截器

    本篇文章将详细探讨如何在Spring Boot中添加和使用拦截器来实现登录拦截。 首先,我们需要了解Spring Boot中的拦截器是如何工作的。在Spring MVC框架中,拦截器是基于AOP(面向切面编程)的概念实现的。我们可以...

    Spring拦截器,高级参数绑定

    下面将详细探讨Spring拦截器的使用以及高级参数绑定和Controller返回值的相关知识。 首先,我们创建一个Spring拦截器需要实现HandlerInterceptor接口或继承HandlerInterceptorAdapter抽象类。以下是一个简单的拦截...

    Flex-Spring拦截器

    在深入研究Flex-Spring拦截器时,理解Spring AOP的核心概念和AMF的工作原理是至关重要的。通过这样的集成,开发者可以在保持Flex客户端的灵活性和交互性的同时,利用Spring的强大功能来处理复杂的业务逻辑和系统管理...

    spring配置JSON拦截器VIEW

    标题中的“spring配置JSON拦截器VIEW”指的是在Spring框架中设置JSON数据的处理方式,特别是通过拦截器(Interceptor)来优化视图层(View)的响应。在Web开发中,拦截器是一种常用的机制,用于在请求被实际处理之前...

    Spring拦截器示例

    而Spring拦截器则是实现AOP的一种方式,它类似于Java的Servlet过滤器,可以在方法调用前后执行自定义的操作。 AOP拦截器在Spring中主要通过`HandlerInterceptor`接口或者`@AspectJ`注解来实现。下面我们将详细探讨...

    SpringMvc 拦截器

    在Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,用于在请求被控制器处理之前或之后执行特定的逻辑。它们可以用来实现通用的功能,如权限验证、日志记录、性能统计等,避免在每个控制器方法中重复编写...

    自己spring boot 拦截器

    在Spring Boot应用中,拦截器(Interceptor)是Spring MVC框架的一部分,用于在请求处理之前、之后或在实际处理过程中执行一些预定义的任务。这通常包括权限检查、日志记录、性能监控等。自定义拦截器可以帮助我们更...

    spring boot 拦截器拦截/Filter 过滤session案例

    在本文中,我们将深入探讨如何在Spring Boot应用中使用拦截器(Interceptor)和过滤器(Filter)来处理用户的登录session。这两个组件都是Spring框架的重要部分,它们在处理HTTP请求和响应时发挥着关键作用。 首先...

    spring拦截器的简单例子

    Spring 拦截器是 Spring 框架中一个非常重要的组件,主要用于处理请求和响应,实现业务逻辑之前和之后的预处理和后处理。它为开发者提供了在 MVC 模式下实现统一处理机制的机会,比如权限验证、日志记录、性能监控等...

    CXF3.0+Spring3.2 自定义拦截器

    3. **Spring集成**:在Spring3.2中,我们可以使用`&lt;cxf:bus&gt;`和`&lt;cxf:interceptor&gt;`标签将自定义拦截器注册到CXF Bus中。这样,Spring容器会管理拦截器的生命周期,并在需要时注入其他依赖。 4. **拦截器链**:CXF...

    使用CGLIB模拟spring的拦截器

    在`intercept`方法中,我们实现了类似Spring拦截器的功能,调用`preHandle`和`postHandle`方法,并根据`preHandle`的结果决定是否执行目标方法。 最后,`afterCompletion`方法的调用通常需要手动管理,因为它涉及到...

    struts2整合spring实现拦截器

    在本文中,我们将深入探讨如何实现Struts2与Spring的集成,以及利用拦截器来增强应用的功能。 首先,Struts2 是一个基于MVC设计模式的开源Web框架,它提供了强大的控制器层,使得开发者可以更方便地处理HTTP请求和...

    springboot spring aop 拦截器注解方式实现脱敏

    这将设置Spring Web相关类的日志级别为DEBUG,以便我们能看到拦截器的执行过程。 启动类通常会包含`@SpringBootApplication`注解,该注解包含了`@EnableAutoConfiguration`,`@ComponentScan`和`@...

    Spring MVC 拦截器

    ### Spring MVC 拦截器:深入理解与实践 #### 一、概念解析 Spring MVC 框架中的拦截器(Interceptor)是一种重要的组件,它主要用于处理请求与响应的生命周期,提供了一种灵活的方式来实现诸如权限检查、日志记录...

    Spring Boot Aspect 切面 AOP 拦截器 Interceptor 监控control请求耗时

    接下来,描述中提到了"MethodInterceptor",这是Spring AOP中的一种拦截器,用于拦截并修改代理对象的方法调用。不同于HandlerInterceptor,MethodInterceptor是基于代理的AOP,适用于拦截任何由Spring管理的对象,...

    Spring Cloud OpenFeign - - - >拦截器

    初学者很容易将 Spring MVC 拦截器 和 Spring Cloud OpenFeign 拦截器搞混,误以为OpenFeign拦截器就是SpringMVC拦截器:Spring MVC拦截器发生在客户端 和 服务端之间,在客户端向服务端发送请求时进行拦截处理。...

    springmvc(spring4版本)+自带登录和拦截器

    本项目是一个基于Spring 4的Spring MVC实现,内含登录功能和拦截器,可以直接运行,为开发者提供了一个快速开发的基础模板。 首先,让我们详细了解一下Spring MVC的核心概念: 1. **DispatcherServlet**:它是...

Global site tag (gtag.js) - Google Analytics