最近用到的一个项目,看到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.TYPE, ElementType.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

最新文章

  1. 从零自学Hadoop(09):使用Maven构建Hadoop工程
  2. Javascript:来一个AJAX封装函数
  3. 【代码笔记】iOS-传身份证号码可返回生日字符串
  4. liunx中的进程与线程
  5. 初中数学题归纳w
  6. Common Macros for Build Commands and Properties
  7. java将Excel文件(xlsx,xls)转换为csv文件
  8. 安装&quot;MySQLdb&quot;一波三折.
  9. JDK和JRE的区别
  10. Unity获取安卓手机运营商,电量,wifi信号强度,本地Toast,获取已安装apk,调用第三方应用,强制自动重启本应用
  11. java第一课,java基础
  12. python之with的使用
  13. Android群英传笔记——第二章:Android开发工具新接触
  14. [c/c++] programming之路(27)、union共用体
  15. springcloud Eureka控制台参数说明
  16. jdk的卸载及安装+环境变量的配置
  17. Echarts-各个配置项详细说明总结【转】
  18. LOJ-10106(有向图欧拉回路的判断)
  19. CSS三栏布局
  20. Json字符串转DataTable

热门文章

  1. (十五)golang--init函数
  2. [转帖]springboot+k8s+抛弃springcloud.eureka
  3. 在Mac 上搭建Linux虚拟机--MacOS &amp; VMware10 &amp; CentOS 7
  4. Linux ip Command
  5. C#实现高性能高并发Socket服务器
  6. 【USACO】香甜的黄油
  7. flex:1和flex:auto详解
  8. 如何提高你的移动开发中AS3/AIR性能
  9. Windows RDP的RCE漏洞分析和复现(CVE-2019-0708)
  10. Myapp