告别996之Lombok

news/2023/6/10 22:18:00

实现原理

常用的注解示例图

 依赖

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.18</version>//表示jar包运行在编译时期<scope>provided</scope>
</dependency>

注解解释

  • @Getter:生成字段的get方法
    • @Getter(lazy = true) :进行懒加载,必须用final修饰该字段值
    • @Getter(value = AccessLevel.PRIVATE,onmethod _={@Notnull})
      • value = AccessLevel.PRIVATE:设置生成的get方法的访问级别
      • onmethod _={@Notnull}:为生成的get方法添加其他注解
  • @Setter注解:生成set方法
    • @Setter(value = AccessLevel.PRIVATE,onparam _={@Notnull})
      • onparam _={@Notnull}:为参数添加其他的注解
  • @ToString注解
    • @ToString(exclude = {“属性值”}) :该属性值不生成tostring方法
  • @EqualsAndHashCode注解:为这个类生成equals方法和hashcode方法
    • 该注解同样有一些参数可以设置:比如排除某些字段
  • @Data注解:大而全的注解
    • 包含:@Getter,@Setter,@ToString,@EqualsAndHashCode
  • @NonNull注解

         

         添加注解后生成的.class文件 

  • @AllArgsConstructor,@NoArgsConstructor,@RequiredArgsConstructor
    • @AllArgsConstructor:生成有参构造
    • @NoArgsConstructor:生成无参构造
    • @RequiredArgsConstructor

        

  •  @Cleanup注解:标注在需要关闭的流上会自动的关闭流,效果等同于try-with-source

      

Lombok的优缺点

  • 优点
    • 通过注解自动生成样板代码,提高开发效率
    • 代码简洁,只关注相关属性
    • 新增属性后,无需刻意修改相关方法
  • 缺点
    • 降低了源代码的可读性和完整性
    • 加大对问题排查的难度
    • 需要IDE的相关插件的支持
  • @slf4j注解,@Builder注解,@singular注解 
    • @Slf4j注解:简化日志引入方式作用在类上

    • @Builder注解:简化对象创建过程

    • @singular注解:配合@Builder注解,简化集合类型操作

    • 日志体系

           

  • @slf4j注解
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.30</version>
</dependency>//桥接包
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-jdk14</artifactId><version>1.7.30</version><scope>test</scope>
</dependency>
  • @Builder注解和@singular注解 
    • @Builder将对象的创建和对象的使用完全分离开来

    • @Builder添加在类上:静态属性不能赋值,已初始化final字段不能赋值

    • 普通的属性字段初始化后的值通过这种方式不能带过来

@Builder
public class BuilderTest{//静态属性private static Stirng staticField;//final属性private final Stirng finalField;//final属性private final Stirng finalField = "已经初始化的final属性";//普通属性private Stirng staticField;//集合类属性@Singularprivate List<String> listFields;}//已经初始化的final字段不能赋值,静态字段不能赋值
//普通的属性字段初始化后的值通过这种方式不能带过来
//加上@Singular之后:builder对象时,可以添加一个字段串,也可以添加一个集合

 


https://dhexx.cn/news/show-16351.html

相关文章

Loadrunner脚本读取 XMl 文件

Loadrunner脚本读取 XMl 文件 性能测试工程师要懂代码么&#xff1f;答案是必须的&#xff0c;好多测试员认为在 loadrunner 中编写脚本很难很牛 X 。 好多人认为 loadrunner 只支持 C 语言&#xff08;包括我之前也一直这么认为&#xff09;&#xff0c;因为 loadrunner 默…

06-jvm-堆

目录 6.1 堆的核心概述 6.2 设置堆内存大小与OOM 6.3 年轻代与老年代 6.4 图解对象分配过程 6.5 Minor GC,Major GC,Full GC 6.6 堆空间分带思想 6.7 内存分配策略 6.8 为对象分配内存:TLAB 6.8.1为什么有TLAB(ThreadLocal Allocation Buffer) 6.8.2 什么是TLAB? 6…

标签库

ThinkPHP 模版中的标签库&#xff0c;我们使用的很多内置标签就是通过标签库声明而来的&#xff0c;当然还可以自定义扩展标签。 一&#xff0e;内置标签 模版中的这些内置标签是是在 ThinkPHP/Library/Think/Template/TagLib 下 在完整版中提供了两个类文件&#xff1a; Cx.…

idea 自动定位类所在目录_中国自动化学会推荐的A类和B类学术期刊目录(包含国产和外文)...

中国自动化学会于2018年7月31日发布了《中国自动化学会推荐学术期刊目录(试行)》&#xff0c;主要包含自动化学科领域11个细分领域的302份学术期刊&#xff0c;11个细分领域为&#xff1a;(1)控制理论与控制工程&#xff1b;(2)模式识别与智能系统&#xff1b;(3)检测技术与自动…

绿盟数据库审计系统hive_案例|绿盟DAS助力某高校数据库安全防护加固

一、项目背景某985高校数据库安全防护建设中&#xff0c;通过部署绿盟数据库审计系统(NSFOCUS Database Audit System&#xff0c;简称DAS)&#xff0c;切实加快了数据库安全相关事件的响应速度&#xff0c;提高了内部监管力度&#xff0c;满足等保合规的同时有效解决非法访问监…

学会这些方法,扩展磁盘分区还不是轻轻松松?

大家在网上冲浪时应该都或多或少地会遇到这些问题&#xff0c;就是说自己的C盘空间不足。这确实是一个比较常见的状况&#xff0c;那么为什么会出现这种问题呢&#xff1f; 一般来说&#xff0c;电脑桌面其实是归C盘管的&#xff0c;很多人在下载了东西之后喜欢直接丢在桌面上…

分布式架构的演进

著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。作者&#xff1a;李小翀链接&#xff1a;http://www.zhihu.com/question/22764869/answer/31277656来源&#xff1a;知乎 系统架构演化历程-初始阶段架构 &amp;lt;img data-rawheight"…

Spring-创建完bean之后自动回调里面的方法

目录 1.实现SmartInitializingSingleton接口,具体原因解释如下: 2.实现ApplicationListener接口:基于监听器解决问题,具体原因解释如下: 在公司统一配置中心客户端的程序代码中,遇到了这么一个问题:将所写的客户端程序打成jar后放到客户端里面,创建完Bean之后需要自动回调里面的…

最好的船_充气船垂钓注意事项

点击上方中国钓鱼&#xff0c;上鱼更快、鱼获更多文字 | 中国钓鱼图片 | 网络本人自从1980年开始&#xff0c;一直使用充气船垂钓。现就30年来使用充气船安全垂钓的一些体会与大家交流。一、必须会游泳。这对于使用充气船垂钓的钓友们来说&#xff0c;是必须的基本条件&#xf…

Springboot基于@Conditional的衍生注解

目录 1.ConditionalOnProperty 2.ConditionalOnBean 3.ConditionalOnMissingBean 4.ConditionalOnClass 5.ConditionalOnMissingClass 6.ConditionalOnSingleCandidate 7.ConditionalOnResource 1.ConditionalOnProperty 通过配置…