最近用到的一個項目,看到Controller控制層、Method方法都是通篇的@Path注解,由于之前并沒有使用過該注解,故記此篇。
首先看一下項目中的使用方式:
如上我們可以看到,@Path注解可以标記在類名之上,也可以标記在方法名上。該注解接收一個value參數,表示定義資源的位址。
另外,資源位址相同,但是HTTP方法不同的兩個方法是完全兩個不同的REST接口,HTTP方法和資源位址相結合在一起才可以完成對一個資源的定位。
點進@Path注解後檢視其源碼如下:
我們可以發現其屬于 javax.ws.rs 包,java.ws.rs 是 jax-rs 規範中定義的包名,什麼鬼?
jax-rs 全稱是:java API for RESTful Services,這是一套規範,規範文檔。
簡單點說就是這套規範是為建構restful服務的 [restful可以了解為web接口],我們知道Spring自帶了對restful的支援,但是呢,Spring并沒有遵循這個協定,言外之意就是不具有移植特性,怎麼講?
舉例:JPA大家應該了解吧,采用JPA開發規範的話,很容易實作Mysql與Oracle等資料庫的遷移,因為符合規範。
盡管Spring并不遵循這個協定,但還是Spring好用。
再回到jax-rs,目前能夠實作jax-rs标準的架構有很多,比如:
Apache CXF,開源的Web服務架構。
Jersey, 由Sun提供的JAX-RS的參考實作。
RESTEasy,JBoss的實作。
Restlet,由Jerome Louvel和Dave Pawson開發,是最早的REST架構,先于JAX-RS出現。
Apache Wink,一個Apache軟體基金會孵化器中的項目,其服務子產品實作JAX-RS規範。
說這麼多,其實是想get一點,就是在當下都用Spring的環境下,還是有許多可以實作web服務的,重新再來看@Path吧。
@Path就當@RequestMapping來用,如下所例。
通路路徑為:http://:/<應用域>/clientWeb/getData
參考:https://segmentfault.com/q/1010000002484009/a-1020000002484552
我建立了一個用來記錄自己學習之路的公衆号,感興趣的小夥伴可以關注一下微信公衆号:niceyoo
