`
bugyun
  • 浏览: 559385 次
社区版块
存档分类
最新评论

lombok 介绍(转)

    博客分类:
  • Java
 
阅读更多

转:https://www.cnblogs.com/qnight/p/8997493.html

 

前言

Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。

正文

添加依赖

在 pom.xml 文件中添加相关依赖:

<lombok.version>1.16.20</lombok.version>

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>provided</scope>
        </dependency>

安装插件

由于 Lombok 采取的注解形式的,在编译后,自动生成相应的方法,为了不让 ide 疯了,需要下载插件了支持它。 
以 idea 为例:查找插件 lombok plugin 安装即可。

用我的 User 实体类为例(set,get,toString 方法),

@Getter
@Setter
@ToString
public class SysUserEntity implements Serializable

在按快捷键 Ctrl + F12,可以查找到set,get,toString 方法。

注解

写点常用的,其余的 api 的打开 Jar 包一目了然

@Getter
@Setter
@ToString
@EqualsAndHashCode
构造函数
@AllArgsConstructor

会生成一个包含所有变量,同时如果变量使用了NotNull annotation , 会进行是否为空的校验, 
全部参数的构造函数的自动生成,该注解的作用域也是只有在实体类上,参数的顺序与属性定义的顺序一致。

@NoArgsConstructor

无参构造函数

@RequiredArgsConstructor

会生成一个包含常量(final),和标识了@NotNull的变量 的构造方法。

怎么使用

它们都有三个参数可以设置 
1. String staticName() default "";

如果设置了它,将原来的构造方法的访问修饰符将会变成 私有的,而外添加一个静态构造方法,参数相同,名字是设置的字符串的名字,访问修饰符为公有的。

  1. AnyAnnotation[] onConstructor() default {}; 
    在构造方法上添加注解。使用方法@RequiredArgsConstructor(onConstructor=@__({@AnnotationsGoHere}))}

    例如我们在 Spring 项目中需要注入多个值,写很多个 @Autowired 很麻烦,就可以使用这种方式:

    @Service
    @RequiredArgsConstructor(onConstructor = @__(@Autowired))
    public class UserServiceImpl implements IUserService {
       private final IUserRepository userRepository;
       private final IOrderRepository orderRepository;
       ………………
  2. AccessLevel access() default lombok.AccessLevel.PUBLIC; 
    构造函数访问修饰符;

  3. @NoArgsConstructor无参构造函数中还有个注解 boolean force() default false; 
    作者的注释是 If {@code true}, initializes all final fields to 0 / null / false. Otherwise, a compile time error occurs.

    设置为 true 的时候,初始化所有的参数为默认值,否则编译错误。

@Data

我自己尝试了下,我们使用 @Data 注解就可以有下面几个注解的功能: @ToString@Getter@Setter@EqualsAndHashCode@NoArgsConstructor 。

注意的是,同时使用@Data 和 @AllArgsConstructor 后 ,默认的无参构造函数失效,如果需要它,要重新设置 @NoArgsConstructor

@Slf4j
//类上面注解了,直接调用 log 即可:
log.info(xxxx);
@Log

使用的是 java.util.logging.Logger ,直接使用 变量 log

@Builder

bulder 模式构建对象。

@Cleanup
@Cleanup 
InputStream in = new FileInputStream(args[0]);
@Cleanup 
OutputStream out = new FileOutputStream(args[1]);

自动化关闭流,相当于 jdk1.7 种的 try with resource

val

类型推导。

 val example = new ArrayList<String>();
 example.add("Hello, World!");

对应的转换后代码就是:

 val example = new ArrayList<String>();
 example.add("Hello, World!");
@NonNull
public NonNullExample(@NonNull Person person) {
    this.name = person.getName();
 }

转换后就是:

public NonNullExample(@NonNull Person person) {
    if (person == null) {
      throw new NullPointerException("person");
    }
    this.name = person.getName();
 }
@SneakyThrows

翻译就是暗中抛出异常

当我们需要抛出异常,在当前方法上调用,不用显示的在方法名后面写 throw

@SneakyThrows(Exception.class)
@Synchronized

方法中所有的代码都加入到一个代码块中,默认静态方法使用的是全局锁,普通方法使用的是对象锁,当然也可以指定锁的对象。

private final Object lock = new Object();
@Synchronized("lock")
public void foo() {
    // Do something
}

个人认为这样的阅读起来比较麻烦,实际开发中往往将 synchronized 颗粒化到代码块中。

 

分享到:
评论

相关推荐

    spring boot3+jpa+lombok+mapstruct实现的restful api例子

    下面将详细介绍这些关键技术及其相互间的配合。 1. **Spring Boot 3**: Spring Boot是Spring框架的一个模块,它简化了初始化、配置和运行Spring应用的过程。Spring Boot 3是最新版本,提供了更多性能优化和对新Java...

    GsonFormat1.5

    1. **Gson库介绍** Gson是Google推出的一款开源库,用于在Java对象和JSON数据之间进行映射。它可以将Java对象转换成JSON字符串,也可以将JSON内容解析成等效的Java对象。这对于在服务器和客户端之间交换数据,或者...

    IDEA推荐插件包合集

    下面将详细介绍其中的一些关键插件及其作用。 1. **BackgroundImagePlus**:此插件允许开发者自定义IDEA的工作区背景,可以设置静态图片或动态壁纸,使编程环境更具个性化,同时可能帮助创造更舒适的编码氛围。 2....

    Spring Boot 2.0 配置属性自定义转换的方法

    import lombok.extern.slf4j.Slf4j; import org.springframework.beans.PropertyEditorRegistrar; import org.springframework.beans.PropertyEditorRegistry; / * @author pader * PropertyEditor 在不同的包...

    IDEA插件1

    2. Lombok库的介绍:Lombok是一个Java库,通过注解的方式,可以在编译时自动为类的属性添加构造器、getter/setter、equals、hashCode和toString方法。这样,开发者在源代码中无需手动编写这些重复性代码,同时在编译...

    Java Magazine MayJune 2017.pdf

    - **Speedment 3.0**:Speedment 3.0的介绍突出了它如何让Java开发者在编写数据库应用程序时保持在Java环境中,而不用转到其他语言或框架。 ##### Java提案 - **JEP 262**:JEP 262是Java的一个增强提议,关于提供...

    SpringBoot+MyBatis简单数据访问应用的实例代码

    * `lombok`:Lombok 插件,用于简化 model 对象的处理。 * `mysql-connector-java`:MySQL 驱动,用于连接 MySQL 数据库。 二、 Spring Boot 配置 在 Spring Boot 应用中,我们需要配置数据库连接、MyBatis 配置等...

    redis的相关知识讲解,及相关配置

    下面将详细介绍如何利用 Jedis 实现对 Redis 的基本操作。 #### 三、搭建开发环境 为了使用 Jedis 操作 Redis,首先需要在项目中引入必要的依赖库: 1. **Redis 客户端 Jedis**:用于与 Redis 进行交互。 2. **...

    IDEA中实体类实现了序列化接口

    本文将详细介绍这一问题的原因以及如何解决。 #### 二、序列化简介 序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在Java中,如果一个类需要支持序列化,那么这个类需要实现`java.io.Serializable`...

    十分好用的IDEA插件

    本文将详细介绍几个在标题和描述中提到的、能够极大提升开发效率的IDEA插件。 1. **Lombok插件**: Lombok是一个Java库,通过注解的方式,帮助开发者自动处理类中的getter、setter、构造函数等冗余代码,从而减少...

    Dubbo3.0入门教程与新特性介绍.pdf

    在 provider 项目中,我们需要配置 pom 文件,引入 Spring Boot Web 和 Lombok 依赖。接着,创建一个简单的 UserService 类,提供 getUser 方法。在主启动类 ProviderApplication 中启动 Spring Boot 应用。...

    (jsp+servlet)学生宿舍管理系统

    介绍 一个学生宿舍管理系统(jsp+servlet),功能齐全,jsp页面使用了layui,JQuery,layer,ECharts等,后端使用maven搭建,用tomcat7插件运行,使用了jstl,jackson,lombok,commons-fileupload等插件。简单模拟...

    springboot快速开发架构.rar

    #### 介绍 快速开发架构模板 #### 软件架构 使用前后端分离的形式 1. api ———— 后端接口服务 2. nep-admin ———— 单页面版静态页面 3. web(单页面版) ———— 前端页面服务 4. nginx ———— 服务核心...

    AndroidStudio 优秀插件汇总.zip

    本文将深入探讨“AndroidStudio 优秀插件汇总.zip”中的内容,介绍一系列提升开发效率、优化代码质量和增强用户体验的Android Studio插件。 1. **Android Studio插件的重要性** - 提升开发效率:插件可以自动化...

    关于Java跨域Json字符转类对象的方法示例

    本知识点将详细介绍Java中如何将JSON格式的字符串转换为Java对象,以及常见的第三方库。 首先,要理解JSON数据结构。一个标准的JSON对象是由一系列的“名称/值”对组成的,其中值可以是字符串、数字、数组、布尔值...

    操作系统平台项目代码生成器

    #### 三、项目架构与组件介绍 1. **返回数据格式封装 - Ret类**:为了统一响应格式,项目中封装了一个Ret类,该类负责将所有的数据响应结果进行统一处理,方便前端解析。 2. **列表查询基类 - BaseListRequestPo**...

    BeanUtils工具类

    下面将详细介绍BeanUtils工具类的核心功能和使用方法。 1. **属性设置与获取** BeanUtils工具类通过反射机制实现了对JavaBean的属性设置。例如,我们有一个User类,包含name和age属性,我们可以用以下方式设置属性...

    IDEA开发环境设置.doc

    本篇将详细介绍IDEA的配置步骤,包括工作区配置、好用的插件推荐以及项目配置,以帮助开发者创建高效、舒适的开发环境。 1. **IDEA工作区配置** - **Toolbox管理**: 安装Toolbox可以方便地管理和更新IDEA的不同...

    miaosha:基于springboot + Ajax的商品秒杀项目基础项目(前分离),涉及Springboot,Ajax,redis,mysql,Nginx以及阿里云短信发送服务

    lombok插件支持 依赖介绍 springboot-web Hibernate验证器 阿里云市场短信服务相关依赖 mysql驱动(8.0)及数据源(com.alibaba.Druid) joda-time时间支持 功能介绍 前端 register.html注册页面(实现手机号+...

    你可能真没用过这些 IDEA 插件!

    使用Lombok时,需要在项目中添加Lombok依赖,并安装Lombok插件以启用注解处理器。 2. **RestfulTool/RestfulToolkit**:这两款插件都是针对Restful服务开发的辅助工具,提供了一个服务树视图,可以直接从URL跳转到...

Global site tag (gtag.js) - Google Analytics