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。
控制层使用的注解介绍
作用:参数注解。
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) {
…………
}
作用:方法体注解,对返回值进行拦截。
拦截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;
}
}
SG-UAP常用注解介绍的更多相关文章
- Spring常用注解介绍【经典总结】
Spring的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者Spring XML配置方式. Spring注解方式减少了配置文件内容 ...
- SpringBoot | 第六章:常用注解介绍及简单使用
前言 之前几个章节,大部分都是算介绍springboot的一些外围配置,比如日志配置等.这章节开始,开始总结一些关于springboot的综合开发的知识点.由于SpringBoot本身是基于Sprin ...
- [刘阳Java]_Spring常用注解介绍_第6讲
Spring的注解是在Spring2.5的版本中引入的,目的简化XML配置.在企业开发过程中使用注解的频率非常高,但是学习注解的前提是大家一定要对Spring基于XML配置要熟悉,这是我个人建议,因为 ...
- springMvc之常用注解介绍
@requestbody和@requestparam的用法 获取请求参数的方法 get请求: 直接获取request 如: public String getHtml(HttpServletR ...
- 【JSON 注解】JSON循环引用1-----Jackson常用注解介绍 eq:@JsonIgnore
循环引用:实体A与实体B有关系,A中有B作为字段,B中有A作为一个字段.查询A对象后,将A对象转化为JSON格式数据时,会因为序列化过程中导致A中有B字段,B字段中又有A,这样就引起了循环引用的问题! ...
- Swagger2常用注解和使用方法
一 引入maven依赖 <!--整合Swagger2--> <dependency> <groupId>com.spring4all</groupId&g ...
- SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍
SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍 本篇博文将介绍几种如何处理url中的参数的注解@PathVaribale/@Requ ...
- 单元测试_JUnit常用单元测试注解介绍及代码演示
JUnit常用单元测试注解介绍及代码演示 by:授客 QQ:1033553122 1. 测试环境 1 2. 基础概念 1 3. 常用Annotation 1 4. 运行环境配置 3 maven配置 ...
- SpringBoot 中常用注解@Controller/@RestController/@RequestMapping介绍
原文 SpringBoot 中常用注解 @Controller/@RestController/@RequestMapping介绍 @Controller 处理http请求 @Controller / ...
随机推荐
- Delaunay和Voronoi
什么是Delaunay三角剖分? 图1:Delaunay三角剖分偏爱小角度 给定平面中的一组点,三角剖分指的是将平面细分为三角形,这些点为顶点.在图1中,我们在左侧图像上看到了一组地标,在中间图像上看 ...
- 虚拟机ubuntu16下cheese打开摄像头黑屏问题
在win7上安装了一个ubuntu1604的虚拟机: 在虚拟机下打开电脑上连接的摄像头时,用ubuntu16自带的cheese软件查看是黑屏: 但是cheese上有摄像头名字显示,就是打不开:如下图 ...
- Mybatis报错:org.apache.ibatis.builder.IncompleteElementException
org.apache.ibatis.builder.IncompleteElementException: Could not find result map java.lang.Integer遇到这 ...
- t5_sumdoc.txt
C:\Users\Administrator\Documents\sumdoc 2019\sumdoc t5 final\sumdoc t511C:\Users\Administrator\Docum ...
- 【转】京东金融App端链路服务端全链路压测策略
京东金融移动端全链路压测历时三个月,测试和服务端同学经过无数日日夜夜,通宵达旦,终于完成了移动端链路的测试任务.整个测试有部分涉及到公司敏感数据,本文只对策略部分进行论述. 1.系统架构与策略 在聊性 ...
- 关于linux新建用户并赋予文件夹权限和scp权限的问题
当前用户是aaa,新建用户bbb: $adduser bbb 赋予sudo权限(即把用户bbb添加到sudo组):$usermod -a -G sudo bbb 切换到bbb:$su - bbb 假设 ...
- Pi1-加电
作为理工男,怎么能不折腾?终于等到我4G版的树莓派4. 1.制作系统.新手当然上官网下载官方系统,img文件,写入tf卡.mac下的步骤请见<mac下制作树莓派系统盘>,一步步来就行.思路 ...
- Appium基础之屏幕截图
应用背景 在实际自动化项目运行过程中,很多时候App可以会出现各种异常,为了更好的定位问题,除了捕捉日志我们还需要对运行时的设备状态来进行截屏.从而达到一种“有图有真相”的效果. 截图方法 方法1 s ...
- 简单工厂(二)——coding
public abstract class Video { public abstract void produce(); } public class JavaVideo extends Video ...
- Python浮点数数据精度控制
代码 import decimal from decimal import Decimal, getcontext if __name__ == '__main__': decimal.getcont ...