首页 > 其他分享 >Spring Boot 依赖之 lombok的@Data注解

Spring Boot 依赖之 lombok的@Data注解

时间:2024-08-06 22:52:56浏览次数:11  
标签:username String Spring Boot id other lombok password email

Spring Boot 依赖之 lombok的@Data注解

一、创建 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 注解来减少样板代码,提高开发效率。降本增效这确实是个好方法,特别是一些相对比较老的项目,重构优化的空间会很大。

标签:username,String,Spring,Boot,id,other,lombok,password,email
From: https://blog.csdn.net/ahauedu/article/details/140968142

相关文章

  • Spring Task详细使用
    一、定时任务的理解定时任务即系统在特定时间执行一段代码,它的场景应用非常广泛:购买游戏的月卡会员后,系统每天给会员发放游戏资源。管理系统定时生成报表。定时清理系统垃圾。定时任务的实现主要有以下几种方式:1、Java自带的java.util.Timer类,这个类允许调度一个java.util.......
  • Spring Boot(八十五):集成Apache PDFBox对pdf文件进行操作
    1 ApachePDFBox简介ApachePDFBox是一个强大的Java库,它可以用来读取、修改和创建PDF文件。在本教程中,我们将介绍如何在SpringBoot项目中集成PDFBox来实现PDF文件的读取与导出功能。官网地址:ApachePDFBox|AJavaPDFLibrary2代码示例创建一个springboot项目。2.1......
  • Spring DI
    目录一、主要概念1.依赖2.控制反转(IoC)3.注入方式4.Spring容器二、优点三、示例SpringDI(DependencyInjection,依赖注入)是一种设计模式,用于实现控制反转(InversionofControl,IoC)。在Spring框架中,DI是核心特性之一,通过将对象的创建和管理从应用程序代码中抽离出......
  • 对于springboot无法连接redis解决方案
    对于springboot无法连接redis解决方案一、测试是否能在本地应用上访问到你的redis(如果是部署在linux上的话)1.开启telnet功能2.开始测试端口是否能访问到(适用于所有,包括MQ)3.开放6379端口4.看spring的配置文件注意redis的缩进位置5.pom依赖一、测试是否能在本地......
  • 【Spring源码分析】Spring Scope功能中的动态代理 - Scoped Proxy
    本文基于Springboot3.3.2及Springcloud2023.0.1版本编写。SpringScopedProxy是什么在使用Springcloud配置中心动态配置更新功能时,笔者发现在给一个类加上@RefreshScope注解后,其中@Value注入的字段会被自动更新。起初笔者以为Spring在收到配置更新事件后会自动设置该bean的......
  • 【深入剖析】Spring依赖注入的最佳实践(@Autowired的正确用法)
    文章目录为什么Spring不推荐使用@Autowired进行字段注入?字段注入的使用与弊端1.不可见的依赖关系2.无法使用final修饰符3.测试不便推荐的替代方案1.构造器注入构造器注入的优势包括2.设值注入设值注入的优势包括总结为什么Spring不推荐使用@Autowired进行字......
  • springblade技术架构
    1.前后端的下载运行与对接SpringBlade源码下载地址https://gitee.com/smallc/SpringBlade打开终端,事先准备好一个空文件夹创建project文件夹在project文件夹下创建cloud、boot、vue文件夹进入cloud执行gitclone命令gitclonehttps://gitee.com/smallc/SpringBlade.git下......
  • Springboot计算机毕业设计电影推荐网站0unwo
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,电影分类,电影信息,通知公告,电影资讯开题报告内容一、研究背景与意义随着互联网技术的飞速发展,在线娱乐已成为人们日常生活中不可或缺的一部分。电影作为......
  • Springboot计算机毕业设计电商订单管理系统(程序+源码+数据库)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,商品分类,商家,商品信息开题报告内容摘要本文旨在设计并实现一个高效、易用的电商订单管理系统,以满足现代电商企业对订单处理、库存控制、物流跟踪及财务......
  • Springboot计算机毕业设计电脑商城购物系统(数据库、调试部署、开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,商品分类,商品品牌,商品信息开题报告内容1.选题背景及意义1.1选题背景随着计算机和网络的普及,电子商务已经成为现代社会不可或缺的一部分。特别是在21......