SpringCloud(二)微服务之lombok框架应用

时间:2024-04-02 08:13:44

       

                                                    SpringCloud(二)微服务之lombok框架应用

 

一、lombok框架介绍

1、扯淡入门

在学习SpringCloud的过程中,偶然看到讲师提到lombok注解形式可以简化代码中必须且臃肿的代码方法,比如说常见的set和get方法,使用注解时代码在编译时候会帮你生成相对应的方法,大大简化了代码的臃肿性,哎,技术都是在不断的更新,新的技术也是挺好玩的,所以决定自己也动手进行实战下,再次去验证那一句话"天上飞的理念,地上有着落地的实现"。

 

2、概念

就是通过简单的注解形式去简化或者消除一些项目中必须使用但显得臃肿的代码,通过使用对应的注解,可以在编译时候生成对应的代码。

3、下载地址以及源码

jar下载地址:https://projectlombok.org/download

githut源码地址:https://github.com/rzwitserloot/lombok

 

二、安装步骤

2.1、安装

lombok框架时需要安装集成编译器才能使用的,因为我安装的Ecipse编译器,所以文章中就拿Eclipse进行讲解。

第一步:

在第一章的3中进行下载lombok.jar包

如果不想从上面下载的也可以网盘下载(我的):链接:https://pan.baidu.com/s/1Zqt6NIEisom_WyZVk02u2Q 密码:7tj9 

第二步:

将下载好的lombok.jar拷贝到自己对应的编译器下面

SpringCloud(二)微服务之lombok框架应用

第三步:

关闭编译器,运行lombok.jar,执行命令:java -jar D:FuLXSoft\eclipse\eclipse\lombok-1.16.18.jar

运行之后弹出:

SpringCloud(二)微服务之lombok框架应用

在点击确定进行等待

点击:Specify location(选择编译器的路径)

SpringCloud(二)微服务之lombok框架应用

在点击Install / Update(安装)

SpringCloud(二)微服务之lombok框架应用

到上图这步骤提示的话,则说明已经安装成功了,下一章节讲解在项目中如何使用lombok.jar

 

三、项目中实战使用讲解

"天上飞的理念,地上有着落地的实现",通过上面讲解了一系列的理念和安装过程,有很多好友就不耐烦了,他们很想看下项目中时如何使用的;那好 没问题,下面我们就开始吧

第一步

创建项目:这一步我就不说了,我时直接使用maven进行依赖引用包的,直接导入jar也是可以的,下面两种情况我都有说明,直接看图

SpringCloud(二)微服务之lombok框架应用

第二步

创建实体类以及注解使用

SpringCloud(二)微服务之lombok框架应用

到了这步就完成了,但lombok.jar里面还是有很多注解的,有兴趣的可以进行往下研究

 

四、lombok用法

注解说明

  • val:用在局部变量前面,相当于将变量声明为final
  • @NonNull:给方法参数增加这个注解会自动在方法内对该参数进行是否为空的校验,如果为空,则抛出NPE(NullPointerException)
  • @Cleanup:自动管理资源,用在局部变量之前,在当前变量范围内即将执行完毕退出之前会自动清理资源,自动生成try-finally这样的代码来关闭流
  • @Getter/@Setter:用在属性上,再也不用自己手写setter和getter方法了,还可以指定访问范围
  • @ToString:用在类上,可以自动覆写toString方法,当然还可以加其他参数,例如@ToString(exclude=”id”)排除id属性,或者@ToString(callSuper=true, includeFieldNames=true)调用父类的toString方法,包含所有属性
  • @EqualsAndHashCode:用在类上,自动生成equals方法和hashCode方法
  • @NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor:用在类上,自动生成无参构造和使用所有参数的构造函数以及把所有@NonNull属性作为参数的构造函数,如果指定staticName = “of”参数,同时还会生成一个返回类对象的静态工厂方法,比使用构造函数方便很多
  • @Data:注解在类上,相当于同时使用了@ToString@EqualsAndHashCode@Getter@Setter@RequiredArgsConstrutor这些注解,对于POJO类十分有用
  • @Value:用在类上,是@Data的不可变形式,相当于为属性添加final声明,只提供getter方法,而不提供setter方法
  • @Builder:用在类、构造器、方法上,为你提供复杂的builder APIs,让你可以像如下方式一样调用Person.builder().name("Adam Savage").city("San Francisco").job("Mythbusters").job("Unchained Reaction").build();更多说明参考Builder
  • @SneakyThrows:自动抛受检异常,而无需显式在方法上使用throws语句
  • @Synchronized:用在方法上,将方法声明为同步的,并自动加锁,而锁对象是一个私有的属性$lock$LOCK,而java中的synchronized关键字锁对象是this,锁在this或者自己的类对象上存在副作用,就是你不能阻止非受控代码去锁this或者类对象,这可能会导致竞争条件或者其它线程错误
  • @Getter(lazy=true):可以替代经典的Double Check Lock样板代码
  • @Log:根据不同的注解生成不同类型的log对象,但是实例名称都是log,有六种可选实现类
    • @CommonsLog Creates log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
    • @Log Creates log = java.util.logging.Logger.getLogger(LogExample.class.getName());
    • @Log4j Creates log = org.apache.log4j.Logger.getLogger(LogExample.class);
    • @Log4j2 Creates log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
    • @Slf4j Creates log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
    • @XSlf4j Creates log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);