关于springMvc-MultipartFile的一个问题
@Service
public class upService {
public void save(MultipartFile multipartFile) throws IOException {
multipartFile.getInputStream();
}
@SuppressWarnings("serial")
private static class StandardMultipartFile implements MultipartFile, Serializable {
private final Part part;
private final String filename;
public StandardMultipartFile(Part part, String filename) {
this.part = part;
this.filename = filename;
}
......这里省略实现类里的其他方法
@Override
public InputStream getInputStream() throws IOException {
return this.part.getInputStream();
}
我在upService里调用了MultipartFile 这个接口的getInputStream()方法,这里也没有指定实现类,打断点时就直接进到了StandardMultipartFile 这个静态实现类里的方法了,不知道这是如何做到的呢?
貌似是依赖注入实现的?但是没有看出来啊?查了查资料,貌似不是三种依赖注入的写法,MultipartFile的实现类有三个,怎么就调用这个了呢?很迷惑,每次看java的源码都是一堆问号
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你应该看这个接口:
MultipartResolver
,处理文件上传的策略接口
。在
Spring
中,有两个实现:CommonsMultipartResolver
StandardServletMultipartResolver
看你标签标注了
springboot
,那就看MultipartAutoConfiguration
:这里默认使用的就是
StandardServletMultipartResolver
:这里直接使用
StandardMultipartHttpServletRequest
包装了原有的request
,继续:这里就出现了
StandardMultipartFile
。