Skip to content

Commit 46d27a8

Browse files
committed
spring-mvc: 文件上传,地区解析
1 parent 68b6cf2 commit 46d27a8

File tree

3 files changed

+421
-3
lines changed

3 files changed

+421
-3
lines changed

note/images/MultipartResolver.jpg

42.2 KB
Loading

note/spring-mvc.md

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,4 +321,32 @@ protected void initStrategies(ApplicationContext context) {
321321
}
322322
```
323323

324-
显然,这里就是spring-mvc的核心了。
324+
显然,这里就是spring-mvc的核心了。
325+
326+
### 文件上传支持
327+
328+
initMultipartResolver核心源码:
329+
330+
```java
331+
private void initMultipartResolver(ApplicationContext context) {
332+
try {
333+
this.multipartResolver = context.getBean(MULTIPART_RESOLVER_BEAN_NAME, MultipartResolver.class);
334+
} catch (NoSuchBeanDefinitionException ex) {
335+
// Default is no multipart resolver.
336+
this.multipartResolver = null;
337+
}
338+
}
339+
```
340+
341+
MultipartResolver用于开启Spring MVC文件上传功能,其类图:
342+
343+
![MultipartResolver类图](images/MultipartResolver.jpg)
344+
345+
也就是说,如果我们要使用文件上传功能,须在容器中注册一个MultipartResolver bean。当然,默认是没有的。
346+
347+
### 地区解析器
348+
349+
LocaleResolver接口定义了Spring MVC如何获取客户端(浏览器)的地区,initLocaleResolver方法在容器中寻找此bean,如果没有,注册AcceptHeaderLocaleResolver,即根据request的请求头**Accept-Language**获取地区。
350+
351+
spring-mvc采用了属性文件的方式配置默认策略(即bean),此文件位于spring-mvc的jar包的org.springframework.web.servlet下。
352+

0 commit comments

Comments
 (0)