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

时间:2016-02-13 09:45:58

标签: java spring-boot

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

//User POJO Class
import lombok.Data;

@Data
public class UserVo {

    private String name;
    private String userName;
    private String email;
    private String mobile;
    private String password;
}
<!-- pom.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.aptitest</groupId>
    <artifactId>wt-online-test-backend</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>wt-online-test-backend</name>
    <description>Online Aptitude Test</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>1.9.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.restdocs</groupId>
            <artifactId>spring-restdocs-mockmvc</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

13 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:5)

<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>

答案 2 :(得分:2)

Lombok 是注释处理器-它具有对生成的源树的完全访问权限。注解处理器通常会生成新的源文件,而Lombok通过添加新的字段或方法来修改现有文件。

龙目岛(Lombok)提供了很多注释。 (请参见full List

要回答这个问题:Lombok批注不会在开发时生成代码。仅当Java编译器生成抽象源树时才会发生。因此,不要期望在添加注释时代码会发生神奇的变化。

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

IntelliJ Idea

1)启用注释处理

  

文件->设置->构建,执行,部署->编译器->   注释处理器->(根据给定的图像选中该复选框   下面)

Enable Annotation Processor

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

  

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

Eclipse

遵循this link中的这些步骤。

答案 3 :(得分:1)

首先,您不需要添加@Setter和@Getter。 @Data包括这两个。
  其次,您需要将lombok插件添加到IDE中。(搜索STS的lombok插件或为STS启用注释处理器)。当你这样做时,你真的不会在IDE中看到生成的getter和setter。这将有助于您在IDE中完成编译时错误。多数民众赞成。

答案 4 :(得分:1)

Spring Tool Suite IDE基于eclipse。

来自官方的Lombok文档: https://projectlombok.org/download.html

  

Eclipse和变体 - 将lombok.jar作为Java应用程序运行(通常是双击它)以进行安装。还要将lombok.jar添加到您的项目中。支持的变体:Springsource Tool Suite,JBoss Developer Studio

如果它仍然无效,此Stack Overflow讨论可能对您有所帮助:

how to configure lombok in eclipse luna

答案 5 :(得分:1)

  • Lombok是一个非常方便的工具,用于最小化样板代码以及提供许多其他功能,例如延迟加载,线程安全或不变性。这就是它在开发人员社区中非常受欢迎的原因。
  • 如果Lombok在类路径中,只需在类中添加几个批注,就可以轻松摆脱所有getter和setter方法,类构造函数,哈希码和equals方法,以及更多其他方法。
  • 要使用Lombok,您需要在IDE中安装Lombok。在这里,我正在解释如何使用Eclipse。 在Eclipse中安装Lombok

1。下载Lombok Jar文件

  • 在您的maven项目中添加以下依赖项,以使其首先在本地存储库中下载。

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.18</version>
    </dependency>
    

    现在对新创建的项目执行 mvn全新安装命令,以将该jar下载到本地存储库中。

2。开始安装Lombok

  • 一旦将jar下载到本地存储库中,请从命令提示符转到jar位置,然后运行以下命令java -jar lombok-1.16.18.jar,lombok提供的Lombok安装窗口会打招呼。 / p>

  • 现在单击“指定位置”按钮,然后在eclipse安装文件夹下找到eclipse.exe路径,如下所示。

  • 现在单击“安装/更新”按钮,我们应该在Eclipse中完成安装Lombok。

  • 所有设置正确完成后,您可以使用Lombok的所有提供的jar。

赞:

  • @数据
  • @Getter
  • @Setter
  • @NoArgsConstructor
  • @RequiredArgsConstructor
  • @ToString
  • @EqualsAndHashCode
  • @Delegate
  • @已同步
  • @ Slf4j
  • @Cleanup

有关更多详细信息:

答案 6 :(得分:0)

您还必须将lombok aus代理添加到IDE中。有关详细信息,请参阅https://projectlombok.org/download.html

答案 7 :(得分:0)

在我的例子中,生成的类在我的实体类上有lombok生成的getter / setter。但是除了@Id字段之外,我仍然在为我的实体中的所有字段绑定空值。我正在使用gradle而不是maven。

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

之后我能够坚持我的实体!

答案 8 :(得分:0)

在使用Spring Boot时,您可以省略lombok的版本(该版本将从Spring Boot父POM继承)。还要检查您的IDE是否配置正确!

1. Spring Boot with Lombok

2. Setting up Lombok with Eclipse and Intellij

3. Using lombok

答案 9 :(得分:0)

请按照以下步骤操作:(100%工作)

  1. 下载lombok.jar文件 链接:[[https://projectlombok.org/download][1]
  2. 双击本地计算机上的jar文件。 (它将自动找到IDE的.exe文件并显示)
  3. 使用复选框选择要使用Lombok的IDE。
  4. 单击“安装/更新”按钮(安装几秒钟)。安装后,单击退出。
  5. 重新启动IDE并转到“帮助”选项卡。然后点击“关于(IDE_Name)” 它是在那个显示器上显示有关龙目岛的节目吗?
  6. 然后在代码中使用@Data批注。会起作用的。

例如:

import lombok.Data;
import lombok.NonNull;

public @Data class Project {

@Id
private @NonNull String id;
private @NonNull String name; 
private @NonNull String description;

}

答案 10 :(得分:0)

您需要安装lombok jar并将其添加到eclipse用户的构建路径中。

https://howtodoinjava.com/automation/lombok-eclipse-installation-examples/#lombok-eclipse

或者,您可以在 Eclipse 中从源代码生成 getter 和 setter 并丢弃 @Data 注释

答案 11 :(得分:-1)

使用Springboot + Lombok研究此示例项目。这个类使用@Data: https://github.com/raulvillalbamedina/exampleApiHateoas/blob/master/src/main/java/com/rvillalba/exampleApiHateoas/entity/Example.java

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

答案 12 :(得分:-5)

您需要添加@Setter&amp; @Getter对该类的注释