![](/img/trans.png)
[英]How to see the classes generated by lombok in maven spring boot application
[英]How to use lombok.Data annotation in a Spring Boot application?
我在我的 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>
這里的問題可能與您檢查 getter/setter 是否實際生成的能力有關。
如果您的 IDE 告訴您未生成 getter/setter - IDE 可能是錯誤的。 它可能不會選擇生成 getter/setter; 對於您的 IDE - 確保您有相關的插件。 當您提到 STS 時,這很可能是您的問題。 嘗試與您的案例相關的鏈接之一:
使用獨立於 IDE 的 Maven 構建來確保 Lombok 生成它應該生成的內容。
對於 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>
對於搖籃:
developmentOnly 'org.springframework.boot:spring-boot-devtools'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
Lombok是一個注釋處理器 - 它可以完全訪問生成的源代碼樹。 注釋處理器通常會生成新的源文件,而 Lombok 通過添加新的字段或方法來修改現有的源文件。
Lombok 提供了很多注解。 (見完整列表)
回答這個問題:Lombok 注釋不會在開發時生成代碼。 它僅在 Java 編譯器生成抽象源樹時發生。 所以不要指望每次添加注釋時代碼都會神奇地改變。
但是,您需要在您的特定 IDE 中解決它們,以便正確添加所有依賴項和導入。 下面給出了在首選 IDE 中解析 Lombok 注釋的方法。 您還可以選擇 Maven 項目並解決這些問題( Project Lombok Maven 存儲庫)。
智能理念
1) 開啟注解處理
文件 -> 設置 -> 構建、執行、部署 -> 編譯器 -> 注釋處理器 ->(根據下圖勾選復選框)
2) 安裝/更新 Lombok 插件(見這個)
文件 -> 設置 -> 插件 -> 搜索 Lombok 插件 -> 更新或安裝
蝕
按照此鏈接中的這些步驟操作。
1.下載 Lombok Jar 文件
在您的 Maven 項目中添加以下依賴項,以便它首先下載到您的本地存儲庫中。
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version> </dependency>
現在在新創建的項目上執行mvn clean install命令,將這個 jar 下載到本地存儲庫中。
2.開始安裝龍目島
在本地存儲庫中下載 jar 后,從命令提示符轉到 jar 位置並運行以下命令 java -jar lombok-1.16.18.jar,我們應該會看到 lombok 提供的 Lombok 安裝窗口。
現在單擊“指定位置”按鈕,然后像這樣在 eclipse 安裝文件夾下找到 eclipse.exe 路徑。
現在單擊“安裝/更新”按鈕,我們應該在 eclipse 中完成 Lombok 的安裝。
正確完成所有設置后,您可以使用 Lombok 的所有提供 jar。
喜歡:
更多細節 :
首先,您不需要添加@Setter 和@Getter。 @Data 包括這兩個。
其次,您需要將 lombok 插件添加到您的 IDE。(搜索 lombok plugin for STS 或 Enabling Annotation processor for STS)。 當您這樣做時,您實際上看不到 IDE 中生成的 getter 和 setter。 這將幫助您解決 IDE 中的編譯時錯誤。 就這樣。
Spring Tool Suite IDE 基於 eclipse。
來自龍目島官方文檔: https : //projectlombok.org/download.html
Eclipse 和變體 — 將 lombok.jar 作為 Java 應用程序運行(即通常雙擊它)進行安裝。 還將 lombok.jar 添加到您的項目中。 支持的變體:Springsource Tool Suite、JBoss Developer Studio
如果它仍然不起作用,這個 Stack Overflow 討論可能會幫助你:
您還必須將 lombok aus 代理添加到您的 IDE。 有關詳細信息,請參閱https://projectlombok.org/download.html 。
在我的例子中,生成的類在我的實體類上有 lombok 生成的 getter/setter。 但是我仍然收到為我的實體中的所有字段綁定的空值,@Id 字段除外。 我使用的是 gradle 而不是 maven。
對我來說解決問題的是在 IntelliJ CE IDE 中安裝 Lombok 插件並啟用 IDE/項目的注釋處理。
之后,我就可以很好地堅持我的實體!
當您使用 spring boot 時,您可以省略 lombok 的版本(然后將從 Spring Boot 父 POM 繼承)。 還要檢查您的 IDE 是否配置良好!
請按照以下步驟操作:(100% 工作)
[https://projectlombok.org/download][1]
]例如:
import lombok.Data;
import lombok.NonNull;
public @Data class Project {
@Id
private @NonNull String id;
private @NonNull String name;
private @NonNull String description;
}
您需要安裝一個 lombok jar 並將其添加到 eclipse 用戶的構建路徑中。
https://howtodoinjava.com/automation/lombok-eclipse-installation-examples/#lombok-eclipse
或者,您可以在 Eclipse 中從源代碼生成 getter 和 setter 並丟棄 @Data 注釋
很明顯,問題是 Lombok 項目無法正常工作。 我有同樣的問題。 它在 IntelliJ 上完美運行,我的導師告訴我 IntelliJ 有額外的插件會自動安裝,但是 vs code 並沒有這個功能,所以你需要手動安裝項目 Lombok.so,嘗試安裝 vs code 擴展與龍目島有關。
使用 Springboot + Lombok 研究這個示例項目。 這個類使用@Data: https : //github.com/raulvillalbamedina/exampleApiHateoas/blob/master/src/main/java/com/rvillalba/exampleApiHateoas/entity/Example.java
如果您的 IDE 有錯誤,您需要一個插件:“Eclipse 和變體 Run lombok.jar as a java app(即雙擊它,通常)進行安裝。同時將 lombok.jar 添加到您的項目中。支持的變體:Springsource Tool Suite、JBoss Developer Studio IDEA IntelliJ 由 Michael Plushnikov 開發的插件增加了對大多數功能的支持。”
您需要在類中添加@Setter
和@Getter
注釋,在pom.xml
使用 Lombok 時,或者使用包含兩者的@Data
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.