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

Dee*_*shu 19 java spring-boot

@Data在POJO类中使用了注释,但是没有生成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;
}
Run Code Online (Sandbox Code Playgroud)
<!-- 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>
Run Code Online (Sandbox Code Playgroud)

Wit*_*rba 7

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

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

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


小智 6

对于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>
Run Code Online (Sandbox Code Playgroud)

对于Gradle:

developmentOnly 'org.springframework.boot:spring-boot-devtools'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
Run Code Online (Sandbox Code Playgroud)

  • 这段代码可以做什么来回答这个问题?请提供更多详细信息,谢谢。 (3认同)

Kee*_*asa 5

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

Lombok 提供了很多注解。(见完整列表

回答这个问题:Lombok 注释不会在开发时生成代码。它仅在 Java 编译器生成抽象源树时发生。所以不要指望每次添加注释时代码都会神奇地改变。

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

智能理念

1) 开启注解处理

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

启用注释处理器

2) 安装/更新 Lombok 插件(见这个

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

按照此链接中的这些步骤操作。


dan*_*ten 0

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