(13)处理静态资源(自定义资源映射)【从零开始学Spring Boot】

上面我们介绍了Spring Boot 的默认资源映射,一般够用了,那我们如何自定义目录? 
这些资源都是打包在jar包中的,然后实际应用中,我们还有很多资源是在管理系统中动态维护的,并不可能在程序包中,对于这种随意指定目录的资源,如何访问?

自定义目录

以增加 /myres/* 映射到 classpath:/myres/* 为例的代码处理为: 
实现类继承 WebMvcConfigurerAdapter 并重写方法 addResourceHandlers (对于

package org.springboot.sample.config;

 

import org.springboot.sample.interceptor.MyInterceptor1;

import org.springboot.sample.interceptor.MyInterceptor2;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.config.annotation.InterceptorRegistry;

import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

 

@Configuration

public class MyWebAppConfigurer

        extends WebMvcConfigurerAdapter {

 

    @Override

    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        registry.addResourceHandler("/myres/**").addResourceLocations("classpath:/myres/");

        super.addResourceHandlers(registry);

    }

 

}

访问myres 文件夹中的test.jpg 图片的地址为 http://localhost:8080/myres/test.jpg 
这样使用代码的方式自定义目录映射,并不影响Spring Boot的默认映射,可以同时使用。

如果我们将/myres/* 修改为 /* 与默认的相同时,则会覆盖系统的配置,可以多次使用 addResourceLocations 添加目录,优先级先添加的高于后添加的。

          

其中 addResourceLocations 的参数是动参,可以这样写 addResourceLocations(“classpath:/img1/”, “classpath:/img2/”, “classpath:/img3/”);

 

使用外部目录

如果我们要指定一个绝对路径的文件夹(如 D:/data/api_files ),则只需要使用 addResourceLocations 指定即可。

// 可以直接使用addResourceLocations 指定磁盘绝对路径,同样可以配置多个位置,注意路径写法需要加上file:

registry.addResourceHandler("/api_files/**").addResourceLocations("file:D:/data/api_files");

 Spring Boot 系列博客】

58. Spring Boot国际化(i18n)【从零开始学Spring Boot 

 

57. Spring 自定义properties升级篇【从零开始学Spring Boot 

 

56. spring boot中使用@Async实现异步调用【从零开始学Spring Boot 

 

55. spring boot 服务配置和部署【从零开始学Spring Boot 

 

54. spring boot日志升级篇—logback【从零开始学Spring Boot

 

52. spring boot日志升级篇—log4j多环境不同日志级别的控制【从零开始学Spring Boot 

 

51. spring boot属性文件之多环境配置【从零开始学Spring Boot

 

50. Spring Boot日志升级篇—log4j【从零开始学Spring Boot

 

49. spring boot日志升级篇理论【从零开始学Spring Boot

 

48. spring boot单元测试restfull API【从零开始学Spring Boot

 

47. Spring Boot发送邮件【从零开始学Spring Boot

 

46. Spring Boot中使用AOP统一处理Web请求日志

 

45. Spring Boot MyBatis连接Mysql数据库【从零开始学Spring Boot

 

44. Spring Boot日志记录SLF4J【从零开始学Spring Boot

 

43. Spring Boot动态数据源(多数据源自动切换)【从零开始学Spring Boot

 

42. Spring Boot多数据源【从零开始学Spring Boot

 

41. Spring Boot 使用Java代码创建Bean并注册到Spring中【从零开始学Spring Boot

 

40. springboot + devtools(热部署)【从零开始学Spring Boot 

 

39.4 Spring Boot Shiro权限管理【从零开始学Spring Boot

 

39.3 Spring Boot Shiro权限管理【从零开始学Spring Boot

 

39.2. Spring Boot Shiro权限管理【从零开始学Spring Boot

 

39.1 Spring Boot Shiro权限管理【从零开始学Spring Boot

 

38 Spring Boot分布式Session状态保存Redis【从零开始学Spring Boot 

 

37 Spring Boot集成EHCache实现缓存机制【从零开始学Spring Boot 

 

36 Spring Boot Cache理论篇【从零开始学Spring Boot

 

35 Spring Boot集成Redis实现缓存机制【从零开始学Spring Boot 

 

34Spring Boot的启动器Starter详解【从零开始学Spring Boot

 

33 Spring Boot 监控和管理生产环境【从零开始学Spring Boot

 

32 Spring Boot使用@SpringBootApplication注解从零开始学Spring Boot 

 

31 Spring Boot导入XML配置【从零开始学Spring Boot

 

 

更多查看博客: http://412887952-qq-com.iteye.com/

原文地址:https://www.cnblogs.com/hehehaha/p/6147131.html