springboot的lombok

lombok概述

  • lombok简介

    Lombok想要解决了的是在我们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写,以期方便使用的方法;在使用Lombok之后,将由其来自动帮你实现代码生成,注意,其是 在运行过程中,帮你自动生成的 。就是说,将极大减少你的代码总量。

  • lombok作用

    消除模板代码

    getter、setter、构造器、toString()、equals()

    便捷的生成比较复杂的代码,例如一个POJO要转化成构建器模式的形式,只需要一个注解。

    SpringBoot中使用lombok

  1. 添加依赖
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.16.10</version>
</dependency>
 
  1. 编写一个实体类 User,使用@Data注解
@Data
public class User {
 private String name;
 private int age;
}
  1. 编写测试方法,测试@Data的作用
@Test
public void testUser(){
  User user = new User();
  user.setName("AnyCode");
  user.setAge(20);
  System.err.println(user.toString());
}

lombok的注解介绍

@NonNull : 让你不在担忧并且爱上NullPointerException

@CleanUp : 自动资源管理:不用再在finally中添加资源的close方法

@Setter/@Getter : 自动生成set和get方法

@ToString : 自动生成toString方法

@EqualsAndHashcode : 从对象的字段中生成hashCode和equals的实现

@NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor
自动生成构造方法

@Data : 自动生成set/get方法,toString方法,equals方法,hashCode方法,不带参数的构造方法

@Value : 用于注解final类

@Builder : 产生复杂的构建器api类

@SneakyThrows : 异常处理(谨慎使用)

@Synchronized : 同步方法安全的转化

@Getter(lazy=true) :

@Log : 支持各种logger对象,使用时用对应的注解,如:@Log4j

推荐使用技巧

  • 在 Bean / Entity 类上使用 @Data 注解。
  • 需要使用 Log 对象的地方使用 @Log4j(依项目日志框架决定)。
  • 注意:lombok 的注解不能被继承。

    IDEA中使用lombok

    如果想让lombok生效我们还需要针对idea工具进行插件的安装,下面我们按照顺序打开Idea配置

    File > Settings > Plugins > Browse repositories... > 输入lombok,插件就会被自动检索出来,如下图所示:

    我的工具已经安装了该插件,所有在右侧是没有任何按钮的,如果你的工具没有安装该插件,

    右侧会有一个绿色的按钮,按钮的内容则是Install,点击安装后重启Idea就可以了。

    lombok常用注解详解

  • @EqualsAndHashCode,@ToString :告诉Lombok来生成 equals, hashCode方法,toString方法

    在生成这些方法的时候lombok会使用所有的成员变量。
  • ** @AllArgsConstructor** :会自动创建一个包括所有成员的构造器。
  • @Getter/@Setter: 注解会为每一个标记的成员变量自动生成对应的方法。
  • 用例
package com.jxlg.lance.springbootcorestudy.lombok;

import lombok.*;

/**
 * @author lance(ZYH)
 * @function 测试其他注解
 * @date 2018-03-22 12:27
 */
@EqualsAndHashCode
@ToString
@AllArgsConstructor
public class Student {
    @Setter
    @Getter
    private String stuName;

    @Setter
    @Getter
    private Integer stuAge;

    @Setter
    @Getter
    private String stuClass;

    @Setter
    @Getter
    private Integer stuNumber;
}
  • 如果你不想将注解用在全部的成员变量上,而是仅仅部分变量上,那么你可以提供一个指定的哪一个成员变量需要

    自动生成方法的变量。举例: 比如在这里,我们只想让stuName,stuAge两个成员变量出现在 toString 方法里。

@EqualsAndHashCode
@ToString(of = {"stuName","stuAge"})
@AllArgsConstructor
public class Student {
    @Setter
    @Getter
    private String stuName;

    @Setter
    @Getter
    private Integer stuAge;

    @Setter
    @Getter
    private String stuClass;

    @Setter
    @Getter
    private Integer stuNumber;
}
  • 这些代码已经比我们一开始要好太多了,但是它任然不够简洁。这里重复了大量的 @Getter 和 @Setter 注解。

    如果你只是需要在Class中仅暴露几个字段,那么使用它们非常方便,但如果您需要为所有字段生成访问器,则会变得烦人又无聊。

    为了使代码更加简洁, Lombok永续我们在类级上使用这些注解。如果这些注解放在类名之上,

    那么lombok会自动为我们生成所有字段的访问方法。

@EqualsAndHashCode
@ToString
@AllArgsConstructor
@Setter
@Getter
public class Student {
    private String stuName;

    private Integer stuAge;

    private String stuClass;

    private Integer stuNumber;
}
  • @Buidler :实例化这个类
  • 用例
@EqualsAndHashCode
@ToString
@AllArgsConstructor
@Setter
@Getter
@Builder
public class Student {
    private String stuName;

    private Integer stuAge;

    private String stuClass;

    private Integer stuNumber;
}
测试类:
package com.jxlg.lance.springbootcorestudy.lombok;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

import static org.junit.Assert.*;

@RunWith(JUnit4.class)
public class StudentTest {

    @Test
    public void test(){
        Student student = Student.builder()
                .stuName("张三")
                .stuAge(12)
                .stuClass("高三")
                .stuNumber(12222)
                .build();
        System.out.println(student);
    }
}

结果:
Student(stuName=张三, stuAge=12, stuClass=高三, stuNumber=12222)
  • @Data :简单的来说所有所有的注解我们都可以使用一个注解完成.也就是@Data

    我们在定义类的时候 只需要加一个 @Data 注解,其他的注解我们都不需要在添加就可以达到前面所说的所有功能。

  • 通过上面介绍的,我们平常使用Lombok只需要这样就是就可以了,如下:
@Data
@Builder
public class User {
    private String name;
    private Integer age;
}
 

原文地址:https://www.cnblogs.com/sjxbg/p/10303207.html

时间: 2024-11-05 18:31:28

springboot的lombok的相关文章

springboot 使用 lombok插件中的@data 注解

一.idea安装lombok插件 二 添加maven依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.10</version> </dependency> 三 书写一个实体类 @Data : 注解在类上, 为类提供读写属性, 此外还提供了 equals().hash

SpringBoot集成Lombok,让代码优雅起来

一.Lombok简介 (1)Lombok官网(https://projectlombok.org/)对lombok的介绍 (2)GitHub项目地址:https://github.com/rzwitserloot/lombok 虽然是生硬的翻译,大家也大致可以看到Lombok存在的价值和意义,Lombok主要是可以提高开发效率,让我们这些小码农们工作时可以偷懒,让我们不再编写很多臃肿而定式的代码,虽然现在我们使用IDE工具可以生成很多,但是频繁的生成也会让我们的实体类看起来非常的臃肿.Lombo

SpringBoot整合lombok省略set和get方法

一.lombok概述 Lombok想要解决了的是在我们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写,以期方便使用的方法:在使用Lombok之后,将由其来自动帮你实现代码生成,注意,其是 在运行过程中,帮你自动生成的 .就是说,将极大减少你的代码总量. 作用: 消除模板代码:getter.setter.构造器.toString().equals() 便捷的生成比较复杂的代码,例如一个POJO要转化成构建器模式的

带你搭一个SpringBoot+SpringData JPA的环境

前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 不知道大家对SpringBoot和Spring Data JPA了解多少,如果你已经学过Spring和Hibernate的话,那么SpringBoot和SpringData JPA可以分分钟上手的.SpringBoot和SpringData JPA的好处我就不说了,当时我学习的时候也粗略做过笔记,有兴趣的同学可以去看看 SpringBoot就是这么简

SpringBoot整合MybatisPlus

1. 开发前准备 1.1 前置知识 java基础 SpringBoot简单基础知识 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lombok.MybatisPlus SpringBoot版本:2.1.4 1.3 涉及知识点 MybatisPlus简介.特性.架构 MybatisPlus快速入门 MybatisPlus的基本CRUD MybatisPlus的高级查询:like查询.条件查询.分页查询等 2. MybatisPlus入门 2.

SpringBoot整合aop日志管理

1. 开发前准备 1.1 前置知识 java基础自定义注解.反射 Spring aop SpringBoot简单基础知识即可 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lombok.mybatisplus.Spring aop SpringBoot版本:2.1.4 1.3 涉及知识点 自定义注解. 反射 spring aop 环绕通知 2. aop日志实现 AOP(Aspect Oriented Programming)是一个大话题,这

SpringBoot整合微信小程序登录

1. 开发前准备 1.1 前置知识 java基础 SpringBoot简单基础知识 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lombok.mybatisplus.微信小程序 SpringBoot版本:2.1.4 1.3 涉及知识点 微信小程序登录流程 2. 微信小程序登录流程 微信小程序登录流程涉及到三个角色:小程序.开发者服务器.微信服务器 三者交互步骤如下: 第一步:小程序通过wx.login()获取code. 第二步:小程序通过

SpringBoot 集成ehcache

1, 项目实在springboot 集成mybatis 的基础上的: https://www.cnblogs.com/pickKnow/p/11189729.html 2,pom 如下,有的不需要加,只需要加下ehcache 相关就行 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> &l

API接口幂等性框架设计

表单重复提价问题 rpc远程调用时候 发生网络延迟  可能有重试机制 MQ消费者幂等(保证唯一)一样 解决方案: token 令牌 保证唯一的并且是临时的  过一段时间失效 分布式: redis+token 注意在getToken() 这种方法代码一定要上锁  保证只有一个线程执行  否则会造成token不唯一 步骤 调用接口之前生成对应的 token,存放在redis中 调用接口的时候,将该令牌放到请求头中 (获取请求头中的令牌) 接口获取对应的令牌,如果能够获取该令牌 (将当前令牌删除掉),