@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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工作300:处理预览界面

<template><el-dialogtitle"提示":visible.sync"dialogVisible"width"30%":before-close"handleClose"><div style"margin: 0 auto"><div v-if"tableData.content_type2"><h1>图文…

iOS的SVN

1、cornerstone2、smart svn mac &#xff08;比较好用&#xff09;3、还xcode自带的。转载于:https://www.cnblogs.com/YangBinChina/p/8971148.html

导入数据任务(id:373985)异常, 错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件...

小程序导入&#xff0c;别人导出的数据库json文件&#xff0c;错误信息如下&#xff1a; 导入数据库失败, Error: Poll error, 导入数据任务&#xff08;id:373985&#xff09;异常&#xff0c;错误信息&#xff1a;解析导入文件错误&#xff0c;请检查导入文件内容&#xff0c…

工作301:substring使用

在 String 中提供了两个截取字符串的方法&#xff0c;一个是从指定位置截取到字符串结尾&#xff0c;另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。 1. substring(int beginIndex) 形式 此方式用于提取从索引位置开始至结尾处的字符串部分。调用时&#xff0c;括…

java -jar 指定端口发布

java -jar -Dserver.port9999 boot.jar 转载于:https://www.cnblogs.com/kaka666/p/8971339.html

ArrayList与String[]

不逼自己一把&#xff0c;你永远不知道什么是绝望。 今天被初学java的朋友问到了String[]跟ArrayList是不是有关系呢&#xff1f; 猜测是名称之间的联想&#xff0c;记此篇解惑。 Array英语单词里是数组、阵列的意思&#xff0c;在java中数组是这样定义的&#xff1a;一组相关类…

工作302:scss目录编写

css 样式存放目录&#xff08;待定&#xff0c;选用less或scss&#xff09;这里我不会把style抽到外头&#xff0c;但是可以写一些全局样式放在这里&#xff0c;里面注意放入common.less normalize.less,里面直接写.el-button那么所有的el-button就会被影响&#xff0c;这里要提…

工作303:接口返回的上传地址默认是可以调用的

let testUrlgetActionXing("/internal/pictures/uploader",).then(res>{console.log(res)testUrlres.data.toString()接口上传的返回地址console.log(testUrl)testUrltestUrl.substring(24)console.log(testUrl)getActionXing(testUrl).then(res>{console.log(…

WebStorm取消默认style样式折叠

WebStorm取消默认style样式折叠&#xff1a; File--->Settings打开一个窗口 Edit--->CodeFolding 把HTML style attribute的前面的钩去掉[取消勾选] 右下角点击Apply--->ok

AtCoder Grand Contest 023 C - Painting Machines

Description 一个长度为 \(n\) 的序列,初始都为 \(0\),你需要求出一个长度为 \(n-1\) 的排列 \(P\), 按照 \(1\) 到 \(n\) 的顺序,每次把 \(P_i\) 和 \(P_i1\) 染成 \(1\),一个排列的价值为所有的位置都变成 \(1\) 的操作次数,求所有排列的价值和题面 Solution 我们求出价值为 …

Vue中的computed属性

1、前言 本篇是Vue中最常用到的API之一computed属性&#xff0c;转载信息如下&#xff1a; 作者&#xff1a;gunelark链接&#xff1a;https://www.cnblogs.com/gunelark/p/8492468.html 2、正文 看了网上很多资料&#xff0c;对vue的computed讲解自己看的都不是很清晰&#xf…

工作304:uni返回上一页面

activated(){this.cheange(0) },用于刷新uni页面的操作 返回上一个页面

订单管理系统(含源码)

本文demo下载和教学视频地址&#xff1a;http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId1077 实例使用PhpMySqlhtmlcss技术实现了订单管理系统, 系统可以分为多个角色进行登录操作, 每个角色分别对应相应的功能, 实例中介绍了一个强大的工具phpStudy&a…

工作305:对选择的数值清空

<template><div><!--选择账号 选择账号的具体页面 选择添加账号--><el-button icon"el-icon-plus" size"medium" click"open" :disabled"viewMode">添加账号</el-button><!--title表示标题 close表示…

openstack placement 组件作用理解

例如&#xff0c;一个资源提供者可以是一个计算节点&#xff0c;共享存储池&#xff0c;或一个IP分配池。placement服务跟踪每个供应商的库存和使用情况。例如&#xff0c;在一个计算节点创建一个实例的可消费资源如计算节点的资源提供者的CPU和内存&#xff0c;磁盘从外部共享…

Spring和SpringMVC总结篇

作者&#xff1a;肥宅兜链接&#xff1a;https://www.cnblogs.com/doudouxiaoye/p/5693399.html 1.为什么使用Spring ? 方便解耦&#xff0c;简化开发;通过Spring提供的IoC容器&#xff0c;可以将对象之间的依赖关系交由Spring进行控制&#xff0c;避免硬编码所造成的过度程序…

Python3爬虫(十一) 爬虫与反爬虫

Infi-chu: http://www.cnblogs.com/Infi-chu/ 一、重要概念 二、爬虫反爬虫进化论 转载于:https://www.cnblogs.com/Infi-chu/p/8981537.html

Io 异常: Invalid number format for port number

报错信息&#xff1a; Caused by: java.sql.SQLException: Io 异常: Invalid number format for port number at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.ja…

工作308:控制change

<div class"container" style"text-align: left;margin-top: 20px;margin-left: 10%" ><!--双向绑定数据checkedData 加入多选框的样式绑定的是checkData的数据 本次位置是一个数组 当其中选择的数值发生变化的时候 会触发对应的方法 --><e…

配置Maven环境变量-Eclipse/Idea添加Maven

1. 文件下载 官网下载地址&#xff1a;http://maven.apache.org/download.cgi 下方有我提供的下载链接。 由于下载缓慢&#xff0c;提供一份我的下载链接&#xff1a;https://www.lanzous.com/i7v2ryb 2. 解压文件 3. 环境变量 3.1、新建环境变量&#xff0c;如下所示&#xff…