Java 如何在Spring引导应用程序中使用lombok.Data注释?

Java 如何在Spring引导应用程序中使用lombok.Data注释?,java,spring-boot,Java,Spring Boot,我在POJO类中使用了@Data注释,但是没有生成getter和setter。 我使用的IDE是sts(Spring工具套件) //用户POJO类 导入龙目数据; @资料 公共类UserVo{ 私有字符串名称; 私有字符串用户名; 私人字符串电子邮件; 私有字符串移动; 私有字符串密码; } 4.0.0 com.aptitest wt在线测试后端 0.0.1-快照 罐子 wt在线测试后端 在线能力倾向测试 org.springframework.boot spring启动程序父级 1.3.2

我在POJO类中使用了
@Data
注释,但是没有生成getter和setter。 我使用的IDE是sts(Spring工具套件)

//用户POJO类
导入龙目数据;
@资料
公共类UserVo{
私有字符串名称;
私有字符串用户名;
私人字符串电子邮件;
私有字符串移动;
私有字符串密码;
}

4.0.0
com.aptitest
wt在线测试后端
0.0.1-快照
罐子
wt在线测试后端
在线能力倾向测试
org.springframework.boot
spring启动程序父级
1.3.2.1发布
UTF-8
1.8
org.springframework.data
spring数据jpa
1.9.2.1发布
org.springframework.boot
spring启动程序数据mongodb
org.projectlombok
龙目
1.16.6
org.springframework.boot
春季启动邮件
org.springframework.session
春季会议
org.springframework.boot

弹簧启动启动器验证 org.springframework.boot SpringBootStarterWeb org.springframework.boot 弹簧起动试验 测试 org.springframework.restdocs SpringRestMVC 测试 org.springframework.boot springbootmaven插件
您还必须将lombok aus作为代理添加到IDE中。有关详细信息,请参见。

有关Maven:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

当在
pom.xml
中使用Lombok时,您需要向类中添加
@Setter
@Getter
注释,或者使用
@Data
,其中既包括,首先,您不需要添加@Setter和@Getter@数据包括这两项。

其次,您需要将lombok插件添加到您的IDE中(搜索用于STS的lombok插件或启用用于STS的注释处理器)。当您这样做时,您实际上看不到在IDE中生成的getter和setter。这将帮助您解决IDE中的编译时错误。仅此而已。

使用Springboot+Lombok研究此示例项目。此类使用@数据:

如果您的IDE有错误,您需要一个插件: “Eclipse和变体将lombok.jar作为java应用程序运行(即通常双击它)以进行安装。还要将lombok.jar添加到您的项目中。支持的变体:Springsource工具套件、JBoss Developer Studio
由Michael Plushnikov开发的IDEA IntelliJ插件增加了对大多数功能的支持。”

Spring工具套件IDE基于eclipse

从Lombok官方文件:

Eclipse和变体—将lombok.jar作为java应用程序运行(即通常双击它)以进行安装。还要将lombok.jar添加到项目中。支持的变体:Springsource工具套件、JBoss Developer Studio

如果仍然不起作用,此堆栈溢出讨论可能会帮助您:


这里的问题可能与您检查是否实际生成了getter/setter的能力有关

  • 如果您的IDE告诉您没有生成getter/setter,那么IDE可能是错误的。它可能不会选择生成了getter/setter;对于你的IDE-确保你有相关的插件。这很可能是您提到STS时遇到的问题。 请尝试与您的案例相关的链接之一:

  • 使用独立于IDE的Maven构建来确保Lombok生成它应该生成的内容


  • 在我的例子中,生成的类在我的实体类上有lombok生成的getter/setter。但我的实体中的所有字段都绑定了空值,除了@Id field。我用的是gradle而不是maven

    解决这个问题的方法是在IntellijIDE中安装Lombok插件,并为IDE/项目启用注释处理


    在那之后,我可以坚持我的实体只是罚款

    Lombok是一个注释处理器-它可以完全访问生成的源代码树。注释处理器通常生成新的源文件,而Lombok通过添加新字段或方法来修改现有的源文件

    Lombok提供了很多注释。(见附件)

    回答这个问题:Lombok注释不会在开发时生成代码。只有当Java编译器生成抽象源代码树时,才会发生这种情况。因此,不要期望在添加注释时代码会神奇地改变

    但是,您需要在特定的IDE中解析它们,以便正确添加所有依赖项和导入。下面给出了在首选IDE中解析Lombok注释的方法。您还可以进行Maven项目并解决这些问题()

    IntelliJ Idea

    1) 启用批注处理

    文件->设置->构建、执行、部署->编译器-> 注释处理器->(根据给出的图像勾选复选框 (见下文)

    2) 安装/更新Lombok插件()

    文件->设置->插件->搜索Lombok插件->更新或 安装

    Eclipse

    按照中的步骤操作。

    • Lombok是一个非常方便的工具,用于最小化样板代码,并提供许多其他特性,如延迟加载、线程安全或不变性。这就是它在开发人员社区中变得非常流行的原因
    • 如果Lombok位于类路径中,那么只需在类中添加两个注释,它就可以轻松地摆脱所有getter&setter方法、类构造函数、hashcode和equals方法等
    • 要使用龙目山,你需要
      developmentOnly 'org.springframework.boot:spring-boot-devtools'
      compileOnly 'org.projectlombok:lombok'
      annotationProcessor 'org.projectlombok:lombok'
      
      <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>1.16.18</version>
      </dependency>
      
      import lombok.Data;
      import lombok.NonNull;
      
      public @Data class Project {
      
      @Id
      private @NonNull String id;
      private @NonNull String name; 
      private @NonNull String description;
      
      }