JAVA
@Resource
@Override
@SuppressWarnings
@SuppressWarnings("unchecked")//unchecked to suppress warnings relative to unchecked operations(抑制没有进行类型检查操作的警告)
SpringMVC
@Repository
它用于将数据访问层(Dao层)的类标识为spring bean。具体只需将该注解标注在Dao类上即可。
@RestController
@RequestMapping
@RequestAttribute
@RequestParam
@PathVariable
@Component
jackson
@JsonInclude
将它写在类或者属性上即可实现所有属性为null时都不参与序列化。
@JsonInclude(Include.NON_EMPTY);//仅在属性不为空时序列化此字段,对于字符串,即null或空字符串
Include.ALWAYS //
Include.NON_EMPTY //
@JsonNaming
@JsonNaming(SnakeCaseStrategy.class)//指定Json字段名映射策略为蛇形大小写策略。缺省则直接使用Bean属性名
可用的命名映射策略还有:
KebabCaseStrategy: 肉串策略 - 单词小写,使用连字符'-'连接
SnakeCaseStrategy: 蛇形策略 - 单词小写,使用下划线'_'连接;即老版本中的LowerCaseWithUnderscoresStrategy
LowerCaseStrategy: 小写策略 - 简单的把所有字母全部转为小写,不添加连接符
UpperCamelCaseStrategy: 驼峰策略 - 单词首字母大写其它小写,不添加连接符;即老版本中的PascalCaseStrategy
@JsonIgnoreProperties
作用在类上,用来说明有些属性在序列化/反序列化时需要忽略掉,可以将它看做是@JsonIgnore的批量操作,但它的功能比@JsonIgnore要强,比如一个类是代理类,我们无法将@JsonIgnore标记在属性或方法上,此时便可用@JsonIgnoreProperties标注在类声明上,它还有一个重要的功能是作用在反序列化时解析字段时过滤一些未知的属性,否则通常情况下解析到我们定义的类不认识的属性便会抛出异常。
可以注明是想要忽略的属性列表如@JsonIgnoreProperties({"name","age","title"}),
也可以注明过滤掉未知的属性如@JsonIgnoreProperties(ignoreUnknown=true)
@JsonIgnoreProperties({"id", "created", "steps", "copy", "stepList"})//类注解,指定序列化时忽略这些属性,可以用于覆盖超类中默认输出的属性
@JsonProperty
@JsonProperty(value = "user_name")//指定序列化时的字段名,默认使用属性名
@JsonFormat
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")//指定Date类字段序列化时的格式
@JsonIgnore
作用在字段或方法上,用来完全忽略被注解的字段和方法对应的属性.
@JsonProperty
作用在字段或方法上,用来对属性的序列化/反序列化,可以用来避免遗漏属性,同时提供对属性名称重命名.
@JsonProperty("thirdparty")
@JsonIgnoreType
类注解,序列化时忽略此类
@JsonUnwrapped
private User user;
把成员对象中的属性提升到其容器类,并添加给定的前缀,比如上例中: User类中有name和age两个属性,不使用此注解则序列化为:
... "user": { "name": "xxx", "age": 22 } ...
使用此注解则序列化为:
... "user_name": "xxx", "user_age": 22, ...
@JsonIdentityInfo
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,property = "id")
//作用于类或属性上,被用来在序列化/反序列化时为该对象或字段添加一个对象识别码,通常是用来解决循环嵌套的问题