由于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>
分享到:
相关推荐
6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...
6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...
4.6.1.3 默认的初始化和销毁方法 71 4.6.1.4 组合生命周期机制.. 72 4.6.1.5 启动和关闭回调 73 4.6.1.6 在非Web 应用中,优雅地关闭Spring IoC 容器 74 4.6.2 ApplicationContextAware 和...
更改bean的定义(BeanFactoryPostProcessor接口)3.注册Bean到Spring容器(BeanDefinitionRegistryPostProcessor接口)4.通过FactoryBean结合InvocationHandler关于动态代理invoke()方法的理解5.BeanNameAware 7....
主要介绍了Spring注解驱动扩展原理BeanFactoryPostProcessor,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...
6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...
6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...
第一个 Spring 程式 BeanFactory、 ApplicationContext Type 2 IoC、Type 3 IoC 属性参考 自动绑定 集合物件注入 Bean 的生命周期 Bean 进阶管理 理想上对于 Bean 来说,它不...
1 BeanFactoryPostProcessor作用 public interface BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor { /** * 可以修改容器Bean内部的定义信息,全部的bean definitions会加载但是bean没有...
Spring注解驱动开发第36讲——或许,这是你以前没看过的从源码角度理解BeanFactoryPostProcessor的原理
第二部分 Spring 3的新特性............................................................................................................................. 22 第2章 Spring 3.0的新特性和增强 ..................
《spring开发指南》,欢迎使用spring框架的各位下载。
了解spring的加载机制 beanPostProcessor,beanFactoryPostProcessor 的使用 springmvc 的父子容器 aop切面说明 公司内部培训课件
本教程为授权出品教程 ...监听器(ApplicationListener) 3).Spring容器启动过程; 3).web原理 1).Servlet3.0标准新增特性 2).异步请求相关 本视频使用了maven构建程序,需要同学们有对Spring.SpringMVC的基本
BeanFactoryPostProcessor BeanFactoryReference BeanFactoryRefreshableTargetSource BeanFactoryUtils BeanInitializationException BeanInstantiationException BeanIsAbstractException ...
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
该项目提供了,如果在Spring 类中遇到以下情况之一,该将发出编译器警告和错误: @Configuration类不能是最终的。 @Configuration类必须具有可见的无参数构造函数。 @Configuration类的构造函数不得为@Autowired...
* 所有的bean定义已经保存加载到beanFactory,但是bean的实例还未创建 * * * BeanFactoryPostProcessor原理:
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................