• @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

  • 相关阅读:
    Windows 8.1更新变化
    Hibernate Criterion
    HDU 2795 Billboard(宣传栏贴公告,线段树应用)
    解决ccSvcHst.exe CPU占用超50%的问题,及其缘由
    设计模式之解释器模式(Interpreter)摘录
    中国软件开发project师之痛
    【翻译】ExtJS vs AngularJS
    天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,增益其所不能
    linux概念之内存分析
    java实现第四届蓝桥杯带分数
  • 原文地址:https://www.cnblogs.com/niceyoo/p/11862821.html
Copyright © 2020-2023  润新知