zoukankan      html  css  js  c++  java
  • sg-uap常用注解介绍

    注解基本介绍

     Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注解是以‘@注解名’在代码中存在的,根据注解参数的个数,我们可以将注解分为:标记注解、单值注解、完整注解三类。它们都不会直接影响到程序的语义,只是作为注解(标识)存在,我们可以通过反射机制编程实现对这些元数据的访问。另外,你可以在编译时选择代码里的注解是否只存在于源代码级,或者它也能在class文件中出现

    注解定义

    注解定义很简单:

    @Target(ElementType.PARAMETER)

    public @interface Test {}

    使用时以@Test方式标记在方法体,类或参数上。Target(ElementType.PARA

    METER)可以定义注解的标记类型。

    常用 SPRING注解

    1.@Controller

           @Controller注解将一个类标明为用来接收HTTP请求控制器

    2.@RequesMapping

           @RequestMapping注解将特定的URL和具体的控制器类或控制类类中的方法绑定

    3.@PathVariable

           添加@PathVariable注解,可以直接在方法中使用请求URI中的值。

    4.@Repository

             用于将数据访问层(DAO层) 的类标识为Spring Bean。具体只需将该注解标注          

            在 DAO类上即可。同时,为了让Spring能够扫描类路径中的类并识别出       

             @Repository注解,需要在XML配置文件中启用Bean的自动扫描功能,这可    

             以通过<context:component-scan/><context:component-scanbase-

             package=”bookstore.dao”/>   如此,我们就不再需要在XML中显式使用

            <bean/> 进行 Bean 的配置。Spring在容器初始化时将自动扫描base-package         

            指定的包及其子包下的所有class文件,所有标注了@Repository的类都将被册       

             为 SpringBean。

    控制层使用的注解介绍

    1. @ColumnRequestParam

          作用:参数注解。

          com.sgcc.uap.rest.annotation.ColumnRequestParam

          请求体是{columns:["id","name"]}的形式,指明方法的参数是从请求体中获取的字符串数组。

    用于在获取元数据信息时,从请求体获取显示的列,并将列名封装为字符串数组。

          例如:请求参数为params={“columns”:[“id”,“name”,“sex”]},返回数据为:String[]{“id”,“name”,“sex”}    

    使用示例:@RequestMapping("/meta")

        public @ColumnResponseBodyList<ViewAttributeData>getMetaData(

            @ColumnRequestParam("params")String[] columns) {

                 …………

            }

    2. @ColumnResponseBody

          作用:方法体注解,对返回值进行拦截。

          拦截List类型的返回值,将返回值解析为JSON格式字符串,如:

          {“columns”:[{“name”:”id”,”caption”:”编号”,”length”:32},{},{},…]}

          com.sgcc.uap.rest.annotation.ColumnResponseBody

          响应体是{columns:[{},{},{}……]}的形式,指明将方法返回值转化为JSON格式列信息,

          将返回的对象转换为json串。

          返回对象为ViewAttributeData,

          返回数据格式为:  

         {"columns":[{"name":"id","caption":"ID",nullable:false,dataType:"string"},...]}

    3. @IdRequestBody:

          作用:参数注解。

          拦截请求体为{params:{primaryKey: ”EMP_ID” ,  ids:[”001”, “002”,……] }}格式的数据,将此数据转换为字符串数组。如                    

                     [“0001”,”0002”]。

          com.sgcc.uap.rest.annotation.IdRequestBody

          指明方法的参数是从请求体中获取的字符串数组 ,并将主键信息封装为IDRequestObject对象。通过getPrimarykey()和getIds()取出主键名称和主键值

          例如:用于删除操作从请求体中获取主键

         public @VoidResponseBody

      Object delete(@IdRequestBodyIDRequestObjectid) {

                    。。。。。。

          }

    4. @ItemRequestParam:

            作用:参数注解。

            com.sgcc.uap.rest.annotation.ItemRequestParam 

            拦截请求数据{“itemType”:”school”},将数据的itemType解析,返回字符串。例如返回:school。

            该注解用于在树场景中取出节点的itemType。使用示例:

           public @TreeResponseBody

      List<TreeNode>getNodes(@PathVariableString id,

      @ItemRequestParam("params")StringitemType){

                    。。。。。。

             }

    5. @ItemsRequestBody:

            作用:参数注解。

            com.sgcc.uap.rest.annotation.ItemsRequestBody

            拦截请求体的数据格式:

           {“items”:[{“id”:”01”,”name”:”n1”},{},{},…]}和{“parentID”:”0003329281”,“items”:[{“id”:”01”,”name”:”n1”},{},{},…]}

            将数据转化为List<Map>格式,list中map封装一个item数据

            使用示例:用于保存场景,将请求体中的记录封装为到list中。

           public @ItemResponseBody

      List<SchoolVO>saveSchool(@ItemsRequestBodyList<Map>list) {

      。。。。

            }

    6. @ItemsResponseBody:

           作用:方法体注解。

           拦截返回数据。将返回的list集合转化为json字符串。

                    {“items”:[{“id”:”01”,”name”:”n1”},{},{},…] ,itemCount:100}

           com.sgcc.uap.rest.annotation.ItemResponseBody

           拦截返回数据。将返回的list集合转化为json字符串。指明返回值将以 

           {items:[{}{}{}{}]}的形式返回。使用示例:

          public @ItemResponseBody

      QueryResultObjectquery(@QueryRequestParam("params")     

           RequestConditionparams){

            。。。。。

           }

    7. @QueryRequestParam:

            作用:参数注解。

            com.sgcc.uap.rest.annotation.QueryRequestParam

            GET请求中从url中通过指定KEY值将参数取出,用于查询条件。    

            QueryRequestParam("params"),将url中的{"params":{"filter":"name  ='eqe'&sex='female'","orderStr":"age","columns":"id,name,age,sex"}}转换为RequestCondition对象。使用实例:

            public @ItemResponseBody

      QueryResultObjectquery(@QueryRequestParam("params")RequestCondition     

            params){

                    。。。。。

            } 

    8. @QueryRequestParam:

            作用:参数注解。

            com.sgcc.uap.rest.annotation.QueryRequestParam

            GET请求中从url中通过指定KEY值将参数取出,用于查询条件。    

            QueryRequestParam("params"),将url中的{"params":{"filter":"name  ='eqe'&sex='female'","orderStr":"age","columns":"id,name,age,sex"}}转换为RequestCondition对象。使用实例:

            public @ItemResponseBody

      QueryResultObjectquery(@QueryRequestParam("params")RequestCondition     

            params){

                    。。。。。

            } 

    9. @RawResponseBody:

          作用:方法体注解。

          拦截返回值,对于字符串类型的返回值可以原样输出。

          对于List或对象类型的返回值转换为响应的json字符串输出。方便用户封装自定义的格式。

          com.sgcc.uap.rest.annotation.RawResponseBody

          指明方法的返回值应当以原生返回值的形式,绑定到响应体中 ,使用该注解的方法应当返回object。

          使用示例:将方法中返回的字符串原样输出,用于自己拼装返回的格式,不用平台的json转换。

         public @RawResponseBodyObject test(){

      return"welcome!";

          }

          示例中的方法将字符串”welcome!”原样返回。

    11. @VoidResponseBody:

           作用:将空返回值包装为通用的返回格式。

           com.sgcc.uap.rest.annotation.VoidResponseBody

           用于没有特定返回值得方法注解,将对象转换为统一的json串。如:

           {

       "successful":true,    ————方法是否调用成功

        "resultHint":"",     ————异常信息

        "resultValue": “”   ————数据信息是空的

           }

           例如:删除操作

          public @VoidResponseBody

           Object delete(@IdRequestBodyIDRequestObjectid) {

                           。。。。

           }

    Hibernate实体映射注解支持

    平台已经引入了hibernate的注解功能,具体用法与hibernate注解映射相同,

    详细用法可参考Hibernate注解映射相关文档。

    @Entity

    @Table(name= "O_ORG")

    publicclass ORG implementsjava.io.Serializable{

        @Id

        @GenericGenerator(name="ORG_ID",strategy="uuid")

        @GeneratedValue(generator="ORG_ID")

        @Column(name="ORG_ID")

        public String getId() {

            return this.id;

        }

       

        public void setId(Stringid) {

            this.id = id;

        }

    }

  • 相关阅读:
    Netty 心跳处理
    Netty 搭建 WebSocket 服务端
    Spring Boot 集成 MQTT
    Spring Boot 上传文件
    在 CentOS 7 安装 Tomcat
    神坑之 6666 端口 (默认非安全端口)
    MongoTemplate 移除 _class 字段
    在 CentOS 7 安装 RabbitMQ
    MongoDB 分片集群配置
    tensorflow学习(一)
  • 原文地址:https://www.cnblogs.com/LoveShare/p/11362867.html
Copyright © 2011-2022 走看看