天天看點

@Path注解

最近用到的一個項目,看到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
@Path注解