基于4.1.7.RELEASE
此類實作了兩個接口,一個是 ContentNegotiationStrategy ,一個是 MediaTypeFileExtensionResolver ,由此它就可以完成兩種功能
1 根據request中的内容,解析出MediaType的List清單。
2 根據MediaType,解析出對應的url字尾名。
該類隻有含ContentNegotiationStrategy參數和無參數的構造函數,在前者,其會解析參數是否也實作了MediaTypeFileExtensionResolver接口,這個接口前面講過,是負責将MediaType解析出url字尾的接口類,如果實作了,那麼會将其注冊到Set類型私有變量fileExtensionResolvers中去。
另一種形式為
功能都是一樣,隻是參數不同而已。
另一種構造函數是無參數的構造函數,這裡會注冊一個HeaderContentNegoaiationStrategy類到contentNegotiationStrategies清單,這個類之前也講過是根據accept來解析MediaType的。
那麼注冊出來的清單怎麼用呢?看如下方法。
這裡讓所有MediaTypeFileExtensionResolver去解析mediaType,然後将解析出來的字尾名集中傳回。
或者另一種形式
直接擷取所有的字尾。
總結:該類通過内置的内容協商政策和擴充名解析器,将request中的mediaType解析出來,并找到對應的字尾名,可以認為本來有2個作用
1 通過request解析出對應的mediaType
2 擷取全部或者mediaType對應的字尾名