@Path注解


最近用到的一個項目,看到Controller控制層、Method方法都是通篇的@Path注解,由於之前並沒有使用過該注解,故記此篇。

首先看一下項目中的使用方式:

@Path("clientWeb")
public class ClientWeb {

    @POST
    @Path("/getData")
    public String getData(@QueryParam("start") Integer start,@QueryParam("limit") Integer limit) {
        return "xxx"
    }
}

如上我們可以看到,@Path注解可以標記在類名之上,也可以標記在方法名上。該注解接收一個value參數,表示定義資源的地址。

另外,資源地址相同,但是HTTP方法不同的兩個方法是完全兩個不同的REST接口,HTTP方法和資源地址相結合在一起才可以完成對一個資源的定位。

點進@Path注解后查看其源碼如下:

package javax.ws.rs;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.TYPEElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Path {
    String value();
}

我們可以發現其屬於 javax.ws.rs 包,java.ws.rsjax-rs 規范中定義的包名,什么鬼?

jax-rs 全稱是:java API for RESTful Services,這是一套規范,規范文檔

簡單點說就是這套規范是為構建restful服務的 [restful可以理解為web接口],我們知道Spring自帶了對restful的支持,但是呢,Spring並沒有遵循這個協議,言外之意就是不具有移植特性,怎么講?

舉例:JPA大家應該了解吧,采用JPA開發規范的話,很容易實現MysqlOracle等數據庫的遷移,因為符合規范。

盡管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來用,如下所例。

@Path("/clientWeb")
public class  ClientWeb{    
    @GET    
    @Path("/getData")
    public String getData(String params) {
        return “xxx";
    }
}

訪問路徑為:http://:/<應用域>/clientWeb/getData

參考:https://segmentfault.com/q/1010000002484009/a-1020000002484552


我創建了一個用來記錄自己學習之路的公眾號,感興趣的小伙伴可以關注一下微信公眾號:niceyoo


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM