spring-web源码解析之MappingMediaTypeFileExtensionResolver
来源:互联网 发布:windows浏览器下载 编辑:程序博客网 时间:2024/05/24 23:12
基于4.1.7.RELEASE
该类实现了MediaTypeFileExtensionResolver接口,那么实现根据MediaType获取后缀名的方法是必不可少了,那么它跟ContentNegotiationManager有什么区别呢?可以下面几个方法
protected List<MediaType> getAllMediaTypes() { return new ArrayList<MediaType>(this.mediaTypes.values());}获取所有的MediaType。protected MediaType lookupMediaType(String extension) { return this.mediaTypes.get(extension);}
根据后缀名查找对应的MediaType。
注意上面两个方法中都用到了this.mediaTypes,这是一个ConcurrentMap,主要负责存储后缀名和MediaType的对应关系,同时还需要判断该对应关系的唯一性,通过其判断的结果来设置内部的后缀名列表,避免出现重复的情况。
protected void addMapping(String extension, MediaType mediaType) { MediaType previous = this.mediaTypes.putIfAbsent(extension, mediaType); if (previous == null) { this.fileExtensions.add(mediaType, extension); this.allFileExtensions.add(extension); }}
由此可见,采用ConcurrentMap是为了避免出现并发情况下导致的一致性问题。
解析到这里,那么这个类的作用便很好判断了。该类的作用可以描述如下
1 给你一个MediaType和后缀extension的对应列表,里面可能有重复的,你负责存起来并且保证不出现重复的extension。
2 给我找出所有的extension或者某个MediaType对应的extension。
3 给我找出所有的MediaType或者某个extension对应的MediaType。
0 0
- spring-web源码解析之MappingMediaTypeFileExtensionResolver
- Spring-web源码解析之ContextLoaderListener
- Spring-web源码解析之ContextLoader
- Spring-web源码解析之Initializer
- Spring-web源码解析之Initializer2-SpringServletContainerInitializer
- Spring-web源码解析之HttpRequestHandler
- Spring-web源码解析之MediaTypeFileExtensionResolver
- Spring-web源码解析之ContentNegotiationStrategy
- spring-web源码解析之ContentNegotiationManager
- spring-web源码解析之AbstractMappingContentNegotiationStrategy
- Spring-web源码解析之Filter-CharacterEncodingFilter
- Spring-web源码解析之Filter-OncePerRequestFilter:
- Spring-web源码解析之Filter-AbstractRequestLoggingFilter
- Spring-web源码解析之Filter-HiddenHttpMethodFilter
- Spring-web源码解析之Filter-OncePerRequestFilter:
- Spring-web源码解析之Filter-OncePerRequestFilter
- Spring源码解析之初始化
- Spring源码解析之DefaultListableBeanFactory
- 【HNOI2012】【BZOJ2729】排队
- python中的Tkinter
- Linux下postgresql安装
- 2016寒假个人赛(1)B(数学)
- UIScrollView的属性总结
- spring-web源码解析之MappingMediaTypeFileExtensionResolver
- hdu 2304 Electrical Outlets
- 五项重要因素影响关键词排名
- hdu5483Nux Walpurgis
- 纯JSP实现简单微信开发后台
- Android 5.0 Intent
- mysql要实现定时执行sql语句就要用到Event
- thinkPHP的字母函数
- yii1.*的增删改查