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

@Path注解的更多相关文章

  1. Java注解教程:自定义注解示例,利用反射进行解析

    Java注解能够提供代码的相关信息,同时对于所注解的代码结构又没有直接影响.在这篇教程中,我们将学习Java注解,如何编写自定义注解,注解的使用,以及如何使用反射解析注解. 注解是Java 1.5引入 ...

  2. Java注解教程及自定义注解

    Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解. Java1.5引入了注解,当前许 ...

  3. Java注解知识点摘抄

    Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解. Java1.5引入了注解,当前许 ...

  4. 一个简单的MVC框架的实现-基于注解的实现

    1.@Action注解声明 package com.togogo.webtoservice.annotations; import java.lang.annotation.Documented; i ...

  5. WPF画图の利用Path画扇形(仅图形)

    一.画弧 Path继承自Sharp,以System.Windows.Shapes.Shape为基类,它是一个具有各种方法的控件. 我们先看一段xaml代码: <Path Stroke=" ...

  6. android Observable api请求参数设置注解问题

    android Observable api请求参数设置注解问题 2018-10-29 20:05:24.919 11786-11786/xxx E/wxh: getQuote=USD getBase ...

  7. 怎样自己定义注解Annotation,并利用反射进行解析

    Java注解可以提供代码的相关信息,同一时候对于所注解的代码结构又没有直接影响.在这篇教程中,我们将学习Java注解,怎样编写自己定义注解.注解的使用,以及怎样使用反射解析注解. 注解是Java 1. ...

  8. 160621、Java注解教程及自定义注解

    Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解. Java1.5引入了注解,当前许 ...

  9. JAVA - Annotation 注解 入门

    Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解. Java1.5引入了注解,当前许 ...

随机推荐

  1. Java 中 override 和 overload 区别

    问题出现: 即使对于一个经验丰富的开发人员来说,方法重载和方法覆盖的区别都能让他犹豫一下, 对于新手来说,经常容易弄混淆. 有没有比较深入浅出的理解方式,能让人过目不忘,用起来还能有条件反射般的速度呢 ...

  2. Java Scala获取所有注解的类信息

    要想获取使用指定注解的类信息,可借助工具: org.reflections.Reflections 此工具将Java反射进行了高级封装,Reflections 通过扫描 classpath,索引元数据 ...

  3. FFT(快速傅里叶变换)

    FFT(快速傅里叶变换) 前置知识 \(1.复数\) \(2.单位根\) \(3.循环结构\) \(4.C++\) 1.复数 \(定义:形如a+bi的数,其中i^2=-1\) \(计算:1.(a+bi ...

  4. HTML -------- 标签、元素、属性,

    HTMl 中的标签.元素.属性, one.标签 :HTML是由一套标记标签 (markup tag)组成,通常就叫标签 标签由开始标签和结束标签组成 <p> 这是一个开始标签 </p ...

  5. ArrayList 源码分析 基于jdk1.8:

    1:数据结构: transient Object[] elementData;  //说明内部维护的数据结构是一个Object[] 数组 成员属性: private static final int ...

  6. Java学习:网络编程总结

    Java网络编程总结 一.概述 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统.网络编程就就是编写程序使联网的两个(或多个)设备( ...

  7. Maven中的依赖相关总结

    一.Maven的依赖作用域scope compile:编译.测试.运行都会依赖,会打进包中. rumtime:不存于编译,后期运行和测试都会参与,会打进包中. test:只在test classpat ...

  8. excel中使用统计列中的值在其他列出现的次数

    excel中使用统计一列的中值在其他列出现的次数 =COUNTIFS($J$:$J$,K2) 解释下 $J$2 J列中的第二行到 $J$373 J列的373行  范围内 查找 k列的第二行的值 出现的 ...

  9. 3-awk

    1.输出双引号:awk '{print "\""}'        #放大:awk '{print "  \"  "}'使用“”双引号把一个 ...

  10. 基于vue+springboot+docker网站搭建【二】搞定服务器

    搞定服务器 双11在阿里云用家人的身份证注册账号,买了两台打折的服务器.2核4G一台3年799块:1核2G一台3年229块.机器配置如下图. 1.买的时候注意相同地区的相同可用区.比如我两台机器都选择 ...