SpringBoot 的实体类中常用的注解
👨🎓作者:Java 学术趴
💌公众号:Java 学术趴
🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。
🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。微信搜索公众号 Java 学术趴联系小编。
☠️每日毒鸡汤:堕落的一天
👋大家好!我是你们的老朋友Java学术趴。最近看了一下 SpringBoot2 的课程,发现好多的注解并不是很了解,只是简单的会用,但是真是发生的作用却不知道,最近花了一些时间把这些注解进行了一下整理,针对不同的层级进行了细致的划分,最近几天会依次给大家更新关于注解的内容,对大家有帮助的话点赞支持一下哦!
SpringBoot 穷启动类中常用的注解
使用 Spring 开发时,进行配置主要有两种方式,一是 xml 的方式,二是 java config 的方式。Spring 技术自身也在不断的发展和改变,从当前 Springboot 的火热程度来看,java config 的应用是越来越广泛了,在使用 java config 的过程当中,我们不可避免的会有各种各样的注解打交道,所有,注解在实际开发中的地位很高。
1. SpringBoot 实体类中的注解
1.1 lombok 中的注解
1.1.1 @Getter/@Setter
@Getter/@Setter : 注解在类上, 为类提供读写属性。
1.1.2 @ToString
@ToString : 注解在类上, 为类提供 toString() 方法。
1.1.3 @EqualsAndHashCode
@EqualsAndHashCode : 注解在类上, 为类提供 equals() 和 hashCode() 方法。
在类是继承父类的情况下,EqualsAndHashCode 实则就是在比较两个对象的属性;
当 @EqualsAndHashCode(callSuper = false) 时不会比较其继承的父类的属性可能会导致错误判断;
当 @EqualsAndHashCode(callSuper = true) 时会比较其继承的父类的属性;
1.1.4 @NoArgsConstructor
@NoArgsConstructor :注解在实体类上, 为类提供无参构造方法。
1.1.5 @RequiredArgsConstructor
@RequiredArgsConstructor :注解在实体类上,提供有指定参数的构造方法。
1.1.6 @AllArgsConstructor
@AllArgsConstructor : 注解在实体类上,提供全参构造方法。
1.1.7 @NonNull
@NonNull : 注解在参数上, 如果获取到的这个参数为 null , 就会报出异常, throw new NullPointException(参数名)。 注意 :这个注解是注释在实体类的属性上,而不是实体类上。
1.1.8 @Data
@Data :@Data 相当于 @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode 这 5 个注解的合集。写这一个注解就不用写其中包含的这 5 个注解了。
注意:使用 @Date 会生成一无参构造方法,如果想在加一个有参构造方法,需要添加 @AllArgsConstructor 注解。
1.1.9 @Builder
@Builder : 注解在实体类上, 为类提供一个内部的 Builder。
1.1.10 @Synchronized
@Synchronized : 注解在方法上, 为方法提供同步锁。 注意:这个是注解在方法上,而不是类上。
1.1.11 @Log4j
@Log4j : 注解在各个层,提供一个属性名为 log 的 log4j 的日志对象。之后就可以在任何地方直接使用 log.info()打印日志。
以前使用打印日志,必须先创建一个打印日志的 Logger 对象,调用 Logger 对象中的 info()方法进行打印。
加入了 @Log4j 注解之后,直接使用 log.info() 方法打印日志信息
1.1.12 @Slf4j
@Slf4j : 注解在各个层,提供一个属性名为 log 的 Slf4j 的日志对象。他的用法和上面的 @Log4 一样。
1.1.13 @Accessors
@Accessors : Accessor 的中文含义是存取器。这个注解是针对实体类中的 getter 与 setter 方法而言的。
包含的属性:
fluent 属性:参数值为 true/false
默认为 false,当设置为 true 时,表示生成的 setter 和 getter 方法没有前缀 set 和 get,且 setter 方法返回的是当前对象。
getter 方法不是 getId(){},而是 id(){};
setter 方法不是 void setId(){},而是 Person id(int id){}
chain 属性:参数值为 true/false
默认为 false (注:但是当 fluent 为 true 时,其默认为 true) ,当为 false 的时候,生成的 setter 方法是 void 类型;如果设置为 true 生成的 setter 方法返回 this(当前对象)。
这样写的好处:
以前实体类的 setter()方法返回值是:void。当给实体类中的多个参数赋值的时候必须分开写,很麻烦。
使用 @Accessors(chain = true) 之后,setter()方法的返回值是该实例对象,所以此时可以连续调用 setter()
prefix 属性:参数为 String 类型
可以指定前缀,生成 getter 和 setter 方法时会去掉指定的前缀(遵守驼峰命名)
相当于字符串截取功能,在生成 getter 和 setter 方法的时候,会自动截取去除指定前缀,然后加上 get 与 set;
如上代码,生成的不是 getZqrId(),而是 getId()。遵守驼峰命名规则。
版权声明: 本文为 InfoQ 作者【Java学术趴】的原创文章。
原文链接:【http://xie.infoq.cn/article/198a01f0eec46e86a6efc62ac】。文章转载请联系作者。
评论