标签 springboot 下的文章

记得很早之前,java开发为了支持文件上传,需要引入其他依赖,做一些复杂的配置,才能实现文件上传。具体来说,有两种方式,一种是在HttpFilter上做文章,引入一个HttpFilter,在HttpFilter中判断请求中是不是上传文件,如果是上传文件的请求,就用MultipartHttpServletRequest包装原始HttpServletRequest,并透传到下游,这个类内部会解析文件,下游只需要用instanceof判断HttpServletRequest是不是MultipartHttpServletRequest,如果是的话,强转后调用相关方法即可获取文件;在引入springmvc后,spring将这个逻辑包装到了DispatcherServlet中,只需要在spring中配置MultipartResolver实例Bean,DispatcherServlet就会做这个包装,甚至可以在入参中定义MultipartFile参数,spring就会把文件映射到入参中。

而从 servlet 规范3.0 开始,HttpServletRequest接口本身就要求支持文件获取,也就是说凡是支持servlet规范3.0的产品,都应该内部支持文件解析获取。顺便查了一下,servlet3.0规范在2009年11月份就定稿了,tomcat 也在 7.0版本上支持了servlet3.0,这个时间是2011年3月份,也就是说2011年后,不需要引入其他依赖、额外配置就能实现文件解析获取。

- 阅读剩余部分 -

1. 为什么要升级

  1. 支持最新的Java9(虽然目前的项目还没有用到Java9,但未来升级到Java9的可能性会很高)。
  2. 基于Spring5构建,Spring5的各种新特性均可以在这里使用。
  3. 为各种组件的响应式变成提供自动化配置(虽然我们没有用到,但使用这些组件的人用起来会更顺畅)。
  4. 支持SpringMVC的非阻塞式替代方案WebFlux以及嵌入式NettyServer。
  5. 最重要的还是目前的项目依赖还比较简单。如果现在不升级,随着依赖数的增加、版本跨度增加,再升级依赖就会更加困难。

- 阅读剩余部分 -