Spring Boot 依靠之 lombok的@Data注解

嚴華  论坛元老 | 2024-8-11 02:37:04 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1050|帖子 1050|积分 3150

Spring Boot 依靠之 lombok的@Data注解



  • 编译之后的代码
  • Java源代码
  • 引入lombok
一、创建 Spring Boot 项目


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

    • lombok

  • 点击 Next -> Finish
编译之后的代码

1、代码编译之后,字节码文件decompile反编译之后的内容。着实这也就是不加注解需要手动写的,许多setter getter太多太繁琐。
  1. package com.javastudy.maven.pojo;
  2. public class User {
  3.   private Integer id;
  4.   
  5.   private String username;
  6.   
  7.   private String password;
  8.   
  9.   private String email;
  10.   
  11.   public void setId(Integer id) {
  12.     this.id = id;
  13.   }
  14.   
  15.   public void setUsername(String username) {
  16.     this.username = username;
  17.   }
  18.   
  19.   public void setPassword(String password) {
  20.     this.password = password;
  21.   }
  22.   
  23.   public void setEmail(String email) {
  24.     this.email = email;
  25.   }
  26.   
  27.   public boolean equals(Object o) {
  28.     if (o == this)
  29.       return true;
  30.     if (!(o instanceof User))
  31.       return false;
  32.     User other = (User)o;
  33.     if (!other.canEqual(this))
  34.       return false;
  35.     Object this$id = getId(), other$id = other.getId();
  36.     if ((this$id == null) ? (other$id != null) : !this$id.equals(other$id))
  37.       return false;
  38.     Object this$username = getUsername(), other$username = other.getUsername();
  39.     if ((this$username == null) ? (other$username != null) : !this$username.equals(other$username))
  40.       return false;
  41.     Object this$password = getPassword(), other$password = other.getPassword();
  42.     if ((this$password == null) ? (other$password != null) : !this$password.equals(other$password))
  43.       return false;
  44.     Object this$email = getEmail(), other$email = other.getEmail();
  45.     return !((this$email == null) ? (other$email != null) : !this$email.equals(other$email));
  46.   }
  47.   
  48.   protected boolean canEqual(Object other) {
  49.     return other instanceof User;
  50.   }
  51.   
  52.   public int hashCode() {
  53.     int PRIME = 59;
  54.     result = 1;
  55.     Object $id = getId();
  56.     result = result * 59 + (($id == null) ? 43 : $id.hashCode());
  57.     Object $username = getUsername();
  58.     result = result * 59 + (($username == null) ? 43 : $username.hashCode());
  59.     Object $password = getPassword();
  60.     result = result * 59 + (($password == null) ? 43 : $password.hashCode());
  61.     Object $email = getEmail();
  62.     return result * 59 + (($email == null) ? 43 : $email.hashCode());
  63.   }
  64.   
  65.   public String toString() {
  66.     return "User(id=" + getId() + ", username=" + getUsername() + ", password=" + getPassword() + ", email=" + getEmail() + ")";
  67.   }
  68.   
  69.   public User(Integer id, String username, String password, String email) {
  70.     this.id = id;
  71.     this.username = username;
  72.     this.password = password;
  73.     this.email = email;
  74.   }
  75.   
  76.   public User() {}
  77.   
  78.   public Integer getId() {
  79.     return this.id;
  80.   }
  81.   
  82.   public String getUsername() {
  83.     return this.username;
  84.   }
  85.   
  86.   public String getPassword() {
  87.     return this.password;
  88.   }
  89.   
  90.   public String getEmail() {
  91.     return this.email;
  92.   }
  93. }
复制代码
二、Java源代码

java源文件,使用@Data注解之后的代码:
  1. package com.javastudy.maven.pojo;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. /**
  6. * @author zhizhou   2024/6/27 17:37
  7. */
  8. @Data
  9. @AllArgsConstructor
  10. @NoArgsConstructor
  11. public class User {
  12.     private Integer id;
  13.    
  14.     private String username;
  15.    
  16.     private String password;
  17.    
  18.     private String email;
  19. }
复制代码
三、引入lombok

引入lombok
要使用 @Data 注解要先引入lombok,lombok 是什么,它是一个工具类库,可以用简单的注解情势来简化代码,提高开发服从。
  1. <dependency>
  2.     <groupId>org.projectlombok</groupId>
  3.     <artifactId>lombok</artifactId>
  4.     <version>1.18.4</version>
  5.     <scope>provided</scope>
  6. </dependency>
复制代码
在编译器中添加插件
这里以IDEA为例,在setting的plugin里搜索 lombok plugin,安装插件,安装完之后就可以在IDEA的Structure结构中看到@Data注解的效果。

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

源码地点:学习可供参考 码云
总结:

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

嚴華

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表