最近搞了一個基於SSM框架的項目,項目上線了,我也開始對框架進行一些改進工作,其中一項就是給springmvc框架下的RESTFul API添加版本控制,在這里記錄一下我的實現思路以及性能調優過程。
我使用的是spring-3.2.16版本,也是spring3的最后一個版本。
我想要達到的版本控制效果如下:
1.api版本定義在url中,采用${base}/api/v4/..的形式。
2.api版本號通過注解進行定義。
3.如果請求中不指定api版本號則返回最新版本。
4.版本的自動適配,如果請求的api版本不存在,則返回低於請求版本的最新版本。
用過spingMVC的朋友都知道,你在controller中定義的方法,想要對外發布成api,用@RequestMapping這個注解就可以了,springMVC在系統啟動時,掃描到注解后會將方法和我們定義的URI形成映射(見下圖),當外部請求來的時候,通過一系列規則的匹配、校驗,最終找到想要訪問的方法或者返回空結果(貌似是句廢話),這里為了實現上面的效果1,需要將版本信息發布到方法的URI上。

springMVC的設計思想我比較了解,但是對於這個版本管理的需求一時不知道該從何下手,首先當然在網上搜一下已有的解決方案。然后還真的有相關的解決方案。
未完待續。
時隔4、5個月,思路已經忘卻,已將代碼開源至git.oschina。地址奉上:
http://git.oschina.net/hibug/SpringMVCZhiBanBenKongZhi
