首页 > 其他分享 >Spring3中替换默认拦截器的方法BeanFactoryPostProcessor

Spring3中替换默认拦截器的方法BeanFactoryPostProcessor

时间:2023-08-28 10:39:07浏览次数:35  
标签:拦截器 spring import factory BeanFactoryPostProcessor springframework org Spring3


由于Spring默认的静态资源处理器不能满足需求,需要做一些自己的处理,但mvc:resources的标签又挺好用的,不想每次配置静态资源目录的时候,还要特殊指定处理器,也不想修改任何配置代码,于是找到了使用BeanFactoryPostProcessor的方法

 

实现代码如下:

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;

// 这里使用的是注解方法
@Service
public class ResourceHttpRequestHandlerReplacer implements BeanFactoryPostProcessor {
    
    public void postProcessBeanFactory(ConfigurableListableBeanFactory factory) throws BeansException {
        // 找到spring注入器中所有使用原始ResourceHttpRequestHandler的地方
        String[] names = factory.getBeanNamesForType(ResourceHttpRequestHandler.class);
        //全部替换为自己定义的类
        for (String name : names) {
            BeanDefinition bd = factory.getBeanDefinition(name);
            bd.setBeanClassName("com.mycompany.core.spring.mvc.ResourceCacheHttpRequestHandler");
        }
    }
}

 

以上类以及自定义的拦截器处理类com.mycompany.core.spring.mvc.ResourceCacheHttpRequestHandler完成后,只要在spring配置文件中添加一个 ResourceHttpRequestHandlerReplacer 包的注解扫描即可

<context:component-scan base-package="com.mycompany.core.spring.mvc"></context:component-scan>


 

标签:拦截器,spring,import,factory,BeanFactoryPostProcessor,springframework,org,Spring3
From: https://blog.51cto.com/u_16237557/7260782

相关文章

  • 用拦截器实现session登录
    这个功能是这样的,用户在访问网站时,先要进行登录,即要访问处理登录的Action,若没有登录,即访问除了登录的Action之外的Action,则会被拦截器拦截,跳转到错误页面,提示用户还没有进行登录。所以这个拦截器的作用是如果是登录,即请求的是LoginAction,那么就不拦截这个请求,让其通过拦截器,进行登......
  • 实现拦截器的三种方法
    说是三种方法,实际上是一种方法,其实只要这个类实现了Interceptor接口,即可成为一个拦截器类。第一种方法就是直接实现Interceptor接口,这样的话,就要实现这个接口中的三个方法。第二种方法是继承自AbstractInterceptor类,这是个抽象类,实现了Interceptor接口,并且对里面的init()和destroy(......
  • Struts2 中拦截器和Action的调用关系
    所谓的拦截器就是指实现了Interceptor接口的类,该接口中定义了三个方法:init(),destroy(),intercept()。init()用于在服务器启动的时候,初始化这个拦截器。destroy()用于清理分配给拦截器的资源,intercept()是用来起拦截作用的,这个方法还有一个ActionInvocation类型的参数invocation,并且......
  • 过滤器| 拦截器| 监听器的区别与使用
    骑士李四记录:1.过滤器(Filter):过滤器依赖于servlet容器。在实现上基于函数回调。几乎可以对所有请求进行过滤。缺点是一个过滤器实例只能在容器初始化时调用一次。2.拦截器(Interceptor)拦截器依赖于web框架,在SpringMVC中依赖于SpringMVC框架。实现上基于java反射机制,属于面向切......
  • 过滤器和拦截器的区别
    一、过滤器1.什么是过滤器?过滤器是一种用于JavaWeb应用程序中的组件,它可以拦截HTTP请求和响应,以实现一些特定的功能。过滤器可以对请求和响应进行修改,可以阻止请求进入Servlet,也可以修改响应返回给客户端。2.过滤器的主要作用登录验证:检查用户是否已经登录,如果没有......
  • mybatis自定义拦截器@Intercepts
    mybatis:自定义实现拦截器插件Interceptor-知乎(zhihu.com) 11.插件机制Interceptor|一灰灰Learning(hhui.top)......
  • 浅谈拦截器和过滤器
    在Java中,拦截器(Interceptor)是一种用于拦截和处理请求的组件。它可以在请求被处理前和处理后对请求进行拦截和修改。拦截器通常用于实现一些公共的功能,比如日志记录、权限验证、性能监控等。下面是一个简单的Java拦截器示例代码:1publicclassLoggingInterceptorimplements......
  • 【JavaScript42】axios拦截器
    在前端,我们能看到有些网站会对每次请求都添加加密信息.或者每次返回数据的时候,都有解密逻辑.那此时.你思考.不可能每次请求都要程序员去手动写加密逻辑.axios提供了拦截器.可以对每一个请求进行拦截.并修改请求的内容.拦截器还可以对响应进行拦截.并修改响应的数据.......
  • quarkus依赖注入之十一:拦截器高级特性上篇(属性设置和重复使用)
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本篇概览本篇是《quarkus依赖注入》系列的第十一篇,之前的[《拦截器》]学习了拦截器的基础知识,现在咱们要更加深入的了解拦截器,掌握两种高级用法:拦截器属性和重复使用拦截......
  • spring-mvc 系列:拦截器和异常处理器
    目录一、拦截器的配置二、拦截器的三个抽象方法三、多个拦截器的执行顺序四、基于配置的异常处理器五、基于注解的异常处理器一、拦截器的配置SpringMVC中的拦截器用于拦截控制器方法的执行SpringMVC中的拦截器需要实现HandlerInterceptorSpringMVC的拦截器必须在SpringMVC的......