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

由于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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值