Spring Boot 依赖之 lombok的@Data注解

news2024/11/25 2:48:17

Spring Boot 依赖之 lombok的@Data注解

  • 编译之后的代码

  • Java源代码

  • 引入lombok

一、创建 Spring Boot 项目

  1. 启动 IntelliJ IDEA,点击 File -> New -> Project...
  2. 在新项目对话框中,选择 Spring Initializr,点击 Next
  3. 配置 Spring Initializr 项目元数据,如 Group=com.dependencies 和 Artifact=lombok
  4. 选择 Spring Boot 版本,点击 Next
  5. 在依赖选项中选择以下依赖:
    • lombok
  6. 点击 Next -> Finish

编译之后的代码

1、代码编译之后,字节码文件decompile反编译之后的内容。其实这也就是不加注解需要手动写的,很多setter getter太多太繁琐。

package com.javastudy.maven.pojo;

public class User {
  private Integer id;
  
  private String username;
  
  private String password;
  
  private String email;
  
  public void setId(Integer id) {
    this.id = id;
  }
  
  public void setUsername(String username) {
    this.username = username;
  }
  
  public void setPassword(String password) {
    this.password = password;
  }
  
  public void setEmail(String email) {
    this.email = email;
  }
  
  public boolean equals(Object o) {
    if (o == this)
      return true; 
    if (!(o instanceof User))
      return false; 
    User other = (User)o;
    if (!other.canEqual(this))
      return false; 
    Object this$id = getId(), other$id = other.getId();
    if ((this$id == null) ? (other$id != null) : !this$id.equals(other$id))
      return false; 
    Object this$username = getUsername(), other$username = other.getUsername();
    if ((this$username == null) ? (other$username != null) : !this$username.equals(other$username))
      return false; 
    Object this$password = getPassword(), other$password = other.getPassword();
    if ((this$password == null) ? (other$password != null) : !this$password.equals(other$password))
      return false; 
    Object this$email = getEmail(), other$email = other.getEmail();
    return !((this$email == null) ? (other$email != null) : !this$email.equals(other$email));
  }
  
  protected boolean canEqual(Object other) {
    return other instanceof User;
  }
  
  public int hashCode() {
    int PRIME = 59;
    result = 1;
    Object $id = getId();
    result = result * 59 + (($id == null) ? 43 : $id.hashCode());
    Object $username = getUsername();
    result = result * 59 + (($username == null) ? 43 : $username.hashCode());
    Object $password = getPassword();
    result = result * 59 + (($password == null) ? 43 : $password.hashCode());
    Object $email = getEmail();
    return result * 59 + (($email == null) ? 43 : $email.hashCode());
  }
  
  public String toString() {
    return "User(id=" + getId() + ", username=" + getUsername() + ", password=" + getPassword() + ", email=" + getEmail() + ")";
  }
  
  public User(Integer id, String username, String password, String email) {
    this.id = id;
    this.username = username;
    this.password = password;
    this.email = email;
  }
  
  public User() {}
  
  public Integer getId() {
    return this.id;
  }
  
  public String getUsername() {
    return this.username;
  }
  
  public String getPassword() {
    return this.password;
  }
  
  public String getEmail() {
    return this.email;
  }
}

二、Java源代码

java源文件,使用@Data注解之后的代码:

package com.javastudy.maven.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author zhizhou   2024/6/27 17:37
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {

    private Integer id;
    
    private String username;
    
    private String password;
    
    private String email; 
}

三、引入lombok

引入lombok
要使用 @Data 注解要先引入lombok,lombok 是什么,它是一个工具类库,可以用简单的注解形式来简化代码,提高开发效率。

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.4</version>
    <scope>provided</scope>
</dependency>

在编译器中添加插件
这里以IDEA为例,在setting的plugin里搜索 lombok plugin,安装插件,安装完之后就可以在IDEA的Structure结构中看到@Data注解的效果。

在这里插入图片描述

安装完之后就可以在IDEA的Structure结构中看到@Data注解的效果。

在这里插入图片描述
源码地址:学习可供参考 码云

总结:

lombok 注解 @Data 一个组合注解,包含 @Getter、@Setter、@ToString、@EqualsAndHashCode 和 @RequiredArgsConstructor等。通过创建各种实体类并使用 Lombok 注解来减少样板代码,提高开发效率。降本增效这确实是个好方法,特别是一些相对比较老的项目,重构优化的空间会很大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1986246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RF放大器(传输线+终止传输线+奥品电路中常见问题+调谐放大器)

2024-8-6&#xff0c;星期二&#xff0c;22:57&#xff0c;天气&#xff1a;晴&#xff0c;心情&#xff1a;晴。下班抽出点时间看看书&#xff0c;话不多说&#xff0c;学习开始啦。 今日继续学习模电自选教材的第六章&#xff0c;多级放大器、RF放大器和功率放大器。主要学习…

机械学习—零基础学习日志(高数23——无穷小运算)

零基础为了学人工智能&#xff0c;真的开始复习高数 这段时间&#xff0c;把张宇老师讲解考研的第一部分基本全部学习完毕了。 这里把第一部分的内容最后汇总一下。 无穷小运算——吸收律 这里展示一些无穷小的具体计算思路 无穷小运算——计算方法 泰勒展开的原则 夹逼准则…

C语言程序设计-[6] if语句分支结构

if语句分支结构有三种形式&#xff0c;分别按照语句形式、流程图表示、示例的步骤进行讲解。 1、if语句的一般形式 ——简单if语句 语句形式&#xff1a;if(表达式) 语句1&#xff1b; 执行过程&#xff1a; 如果表达式值为“真”,执行该语句1&#xff0c;然后执行if的下一…

【生成式人工智能-四-chatgpt的训练过程-pretrain预训练自督导式学习督导式学习】

大模型是怎么被训练出来的具有人类智慧的 阶段一训练-自我学习-具备知识训练资料self-supervised learning&#xff08;自督导式学习&#xff09; 阶段二-怎么让模型具备人的智慧supervised learning 督导式学习预训练pretrain为什么要用预训练的模型&#xff1f;Adapter逆向工…

【大专生学前端】:挑战与机遇并存——你怎么看?

在当今互联网飞速发展的时代&#xff0c;前端开发作为连接用户与产品的重要桥梁&#xff0c;一直备受关注。然而&#xff0c;近期社会上流传着一种说法&#xff1a;“大专生学前端&#xff0c;没有前途了&#xff0c;毕业即失业。”这一观点不仅引发了广泛的讨论&#xff0c;也…

【爬虫实战】利用代理爬取电商数据

文章目录 前言工具介绍实战获取网站数据编写代码数据展示 推荐总结 前言 当今电商平台正经历着快速的转型与升级。随着技术的进步和用户需求的多样化&#xff0c;电商不仅从简单的在线购物演变为综合性的购物生态系统&#xff0c;还融合了人工智能、大数据和云计算等先进技术。…

freeRTOS入门学习-基于STM32F103C8T6最小系统板-使用cubeMX创建一个新的工程

一、准备工作 首先打开我们的cubeMX软件&#xff0c;搜索我们对应的MCU&#xff0c;我这里使用的是c8t6最小系统板 接下来双击我们需要的芯片型号 二、System Core配置 进入界面后我们先进行时钟的配置 将HSE配置为晶振 然后我们将SYS配置成为serial wire&#xff0c; …

【单片机毕业设计选题24102】-基于STM32和阿里云的禽舍环境监测控制系统

系统功能: 系统分为主机端和从机端&#xff0c;主机端主动向从机端发送信息和命令&#xff0c;从机端 收到主机端的信息后回复温湿度氨气浓度和光照强度等信息。 从机端操作&#xff1a; 从机端上电后显示“欢迎使用环境监测系统请稍后”两秒后显示第一页面。 从机端口上电…

每日学习笔记:C++ STL算法之数值算法

目录 算法头文件 运算后产生结果 对容器所有元素(数列)进行某种运算&#xff1a; accumulate(beg, end, initValue) accumulate(beg, end, initValue, op) 计算两数列的内积&#xff1a; inner_product(beg1, end1, end2, initValue) inner_product(beg1, end1, end2…

红酒与奶酪:欧洲风情的整合

在欧洲的浪漫风情中&#xff0c;红酒与奶酪总是携手相伴&#xff0c;它们各自不同的魅力交织在一起&#xff0c;仿佛一首悠扬的交响曲&#xff0c;在味蕾上奏响。当洒派红酒&#xff08;Bold & Generous&#xff09;与精选奶酪相遇&#xff0c;一场欧洲风情的整合即将上演。…

亚马逊自发货erp,自动虚拟发货自动生成订单

亚马逊自发货 ERP 自动化虚拟发货&#xff0c;贴牌定制独立部署。 大家好&#xff0c;今天来讲一下 ERP 的虚拟自动发货&#xff01; 1. 以为发货都是人工手动去发货的&#xff0c;其实不然&#xff0c;很多产品一爆就是几十、一百单&#xff0c;不可能一个一个点的去发货&am…

vue3 ResizeObserver如何监听一个容器盒子div宽度高度发生改变

ResizeObserver定义 ResizeObserver&#xff1a;是一个 JavaScript API&#xff0c;用于监视元素的大小变化。它可以观察一个或多个 DOM 元素&#xff0c;以便在元素的大小或形状发生变化时触发回调函数。 ResizeObserver &#xff1a;为了更有效地处理元素尺寸变化而引入的&am…

Linux驱动开发—设备树传递给内核,匹配驱动过程分析

文章目录 总体流程图传递DTB过程编译设备树源文件将 .dtb 文件与内核或引导加载程序集成 内核初始化阶段解析DTB内核启动阶段解析 DTB注册设备树节点驱动程序绑定 内核解析设备树二进制文件&#xff08;DTB&#xff09;的过程主要分为几个步骤&#xff0c;从设备树的传递到最终…

Mybatis学习-day19

Mybatis学习-day19 1. resultMap resultMap 是 MyBatis 中最复杂的元素&#xff0c;主要用于解决实体类属性名与数据库表中字段名不一致的情况&#xff0c;可以将查询结果映射成实体对象。 <resultMap id"staffAndDep" type"com.easy.bean.Staff">…

apache 漏洞

影响版本 Apache HTTP Server 2.4.49 某些Apache HTTPd 2.4.50也存在此漏洞 环境搭建 docker pull blueteamsteve/cve-2021-41773:no-cgid 漏洞复现 http://1.15.136.212:8080 1.使⽤poc curl http://1.15.136.212:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd

在没有硬盘的情况下进行电脑数据迁移

电脑数据迁移方式 在更换电脑的时候需要进行文件的传输&#xff0c;但是没有硬盘可以选择使用网线直连或者无线文件共享。通用配置 1.将旧电脑的文件夹或者磁盘设置文件共享 找到指定的文件夹右键属》属性&#xff0c;点击共享》点击高级共享 选择共享文件夹以及修改共享用户…

缓冲区和文件IO--linux系统调用

缓冲区&#xff1a; 缓冲区是一块内存区域&#xff0c;用于存储数据&#xff0c;直到数据被真正写入到文件或设备中&#xff0c;或从文件或设备中读取。这种机制使得程序可以一次处理较大的数据块&#xff0c;而不是频繁地进行较小的I/O操作。 缓冲模式&#xff1a; 全缓冲&…

学习LLM大模型,不容错过的《大语言模型:基础与前沿》(附PDF下载)

前言 就目前来看&#xff0c;大量工作正逐渐被大型语言模型&#xff08;LLM&#xff09;所替代&#xff0c;就比如文本自动生成、智能客服、数据分析和预测等多个领域。这暗示着LLM正逐步成为支撑社会运作的关键基础设施。未来&#xff0c;比Devin更为智能的LLM将会问世。我们…

ARMxy 智能控制器:工业自动化的创新解决方案

工业自动化对控制器的要求也越来越高。ARMxy 智能控制器集成了 PLC 控制和 4G 边缘计算网关&#xff0c;具有多合一的功能&#xff0c;为工业自动化提供了创新的解决方案。 ARMxy 智能控制器的 PLC 控制功能使其能够实现对工业生产过程的精确控制。它可以接收各种传感器的信号…

mapbox-gl 实现绘制图形吸附功能

文章目录 一、前言二、实现代码 一、前言 mapbox-gl 为地图前端框架&#xff0c;以优美的地图样式著称。mapbox-gl-draw 插件可以实现绘制图形&#xff0c;编辑图形的功能&#xff0c;但是编辑图形时无法吸附点位&#xff0c;导致相邻面无法相接。使用mapbox-gl-draw-snap-mod…