最近在做项目的时候由以前的war包部署在tomcat中运行,改成了Spring boot框架,Spring boot框架更加简单方便的搭建一个web应用。

之前的代码在改造的过程中遇到了一个关于附件处理的坑,之前在war包运行的时候,使用了Spring提供的ResourceLoader获取附件,代码是这样写的:

@Autowiredprivate ResourceLoader resourceLoader;protected File getExportFile(MultivaluedMap<String, String> mm)throws IOException {return resourceLoader.getResource("classpath:tpl/DemoTpl.docx").getFile();}

使用Spring boot了之后代码代码在Eclipse中直接运行是可以正常使用的,但是当打包成jar包,放到docker上运行的时候就出问题了,提示获取不到file,这个就坑了,后来通过eclipse远程调试,找到了问题的原因,关于怎么在eclipse中远程调试,可以查看我的另一篇博客: 
Eclipse远程调试 
代码打包成jar包后,目录结构发生变化了之前的tpl放在了BOOT-INF这个下面,但是路径里面多了一个!号导致取不到文件,后来才发现jar包里面是没有File实体的,因为File必须要放到一个磁盘目录下面。找到原因后就改成直接去Io流Stream了,而且用IO流的好处要比File好处更多,优化后的代码为:

protected InputStream getExportTplInputStream(MultivaluedMap<String, String> mm)throws IOException {return resourceLoader.getResource("classpath:tpl/DemoTpl.docx").getInputStream();}

在有文件处理的地方,更加推崇用Io流的方式取代直接操作File

Spring boot处理附件的一个坑相关推荐

  1. spring boot:从零开始搭建一个项目 - day 4 控制台输出日志美化 + swagger2

    spring boot:从零开始搭建一个项目 - day 4 控制台输出日志美化 + swagger2 一.logback.xml配置日志美化 二.集成swagger2 1.引入依赖 2.编写配置文件 ...

  2. spring boot:从零开始搭建一个项目 - day 5 Mybatis plus代码自动生成器

    spring boot:从零开始搭建一个项目 - day 5 Mybatis plus代码自动生成器 一.Mybatis plus代码自动生成器 1.引入配置 2.创建Controller 3.执行m ...

  3. spring boot:从零开始搭建一个项目 - day8 实现jwtToken验证

    锻炼不就是为了吃更多好吃的吗 --刚去完健身房然后开了包薯片=-= spring boot:从零开始搭建一个项目 - day8 实现jwtToken验证 一.生成token 二.重写拦截器 咳,书接上 ...

  4. spring boot:从零开始搭建一个项目 - day 7 springboot devtools热加载+MybatisPlus配置+kisso从入门到放弃

    spring boot:从零开始搭建一个项目 - day 7 springboot devtools热加载+MybatisPlus配置+kisso从入门到放弃 一.springboot devtool ...

  5. Spring Boot(5)一个极简且完整的后台框架

    一个完整的极简后台框架,方便做小项目的时候可以快速开发. 这里面多贴图片和代码,做个参考吧,代码可以下载下来自己看看,里面这套后台模板不错,喜欢的拿去. 先放几张图 项目介绍 SpringBoot,我 ...

  6. Spring Boot集成Redis,这个坑把我害惨了!

    最近项目中使用SpringBoot集成Redis,踩到了一个坑:从Redis中获取数据为null,但实际上Redis中是存在对应的数据的.是什么原因导致此坑的呢? 本文就带大家从SpringBoot集 ...

  7. 使用Spring Boot 的CommandLineRunner遇到的坑

    使用场景 再应用程序开发过程中,往往我们需要在容器启动的时候执行一些操作.Spring Boot中提供了CommandLineRunner和ApplicationRunner两个接口来实现这样的需求. ...

  8. spring boot中Excel文件下载踩坑大全

    项目场景:Spring boot文件下载 调用接口下载spring boot工程的resources目录下的excel模板文件,非常常见的一个文件下载功能,但是却容易遇到很多坑,下面总结记录下. 问题 ...

  9. 使用 Spring Boot CLI 运行第一个Spring boot程序

    简介 Spring Boot CLI是Spring Boot的命令行界面.它可以用来快速启动Spring.  它可以运行Groovy脚本.  Spring Boot CLI是创建基于Spring的应用 ...

最新文章

  1. 在Kubernetes集群上部署高可用Harbor镜像仓库
  2. 数据结构之链表创建一元多项式,求一元多项式之和
  3. 令人迷惑的硬币翻转(洛谷P1146题题解,Java语言描述)
  4. Python高级——用多线程实现UDP聊天器
  5. 图的广度优先搜索遍历
  6. HoloLens 2开发:Pcx 渲染点云单眼显示问题
  7. .ipynb文件的使用问题
  8. Java调用网易163邮箱,发送邮件
  9. 自动升级Golang版本
  10. Android Bugs——Error:java.lang.RuntimeException: Some file crunching failed, see logs for details
  11. 对话惠普亚太区高管:绿色智慧的中国战略
  12. 如何区分前后端 BUG
  13. windows电脑如何设置定时关机?电脑设置定时关机的方法
  14. 微信PC扫码支付(五)-订单查询,关闭订单,下载对账单
  15. TTP229 16路 电容式 触摸开关 数字触摸传感器 模块
  16. 什么是集成测试?集成测试方法有哪些?
  17. 为什么 MySQL 唯一索引会导致死锁,“有心杀贼,无力回天”?
  18. 典型环节(或系统)的频率特性测量
  19. 圆形断面正常水深莫洛图
  20. [家里蹲大学数学杂志]第265期武汉大学2013年高等代数考研试题参考解答

热门文章

  1. 探索Elasticsearch集群API
  2. 思科透露其“星舰”计划 旨在主导云服务器自动化领域
  3. Cloudera Manager集群官方默认的各个组件开启默认顺序(图文详解)
  4. C#图片压缩的实现方法
  5. 从零开始学_JavaScript_系列(16)——CSSlt;3gt;(文本、对齐、圆角、盒模型、背景)...
  6. Cassandra HBase和MongoDb性能比较
  7. 尝试优化骨骼动画计算的意外收获——使用嵌入式汇编对float转int进行优化
  8. CentOS6.5下Nginx1.7.4安装记录
  9. Gstreamer基础知识介绍
  10. Android FFmpeg系列——5 音视频同步播放