gpt4 book ai didi

java - 将 lombok 与 gradle 和 spring-boot 一起使用

转载 作者:太空狗 更新时间:2023-10-29 22:50:22 32 4
gpt4 key购买 nike

我正在尝试使用 lombok 构建一个项目,这就是我所拥有的依赖项。

dependencies {
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
compile("org.springframework.social:spring-social-facebook")
compile("org.springframework.social:spring-social-twitter")
testCompile("org.springframework.boot:spring-boot-starter-test")
testCompile("junit:junit")
compile("org.springframework.boot:spring-boot-devtools")
compile("org.springframework.boot:spring-boot-starter-data-jpa")
compile("mysql:mysql-connector-java")
compileOnly("org.projectlombok:lombok:1.16.10")
}

我能够包含注释,并且我在编辑器中包含了 lombok。我什至能够使用 lombok 编译代码并对 lombok 生成的方法进行调用。

这是我的实体:

@Data
@Entity
@Table(name = "TEA_USER", uniqueConstraints = {
@UniqueConstraint(columnNames = { "USR_EMAIL" }),
@UniqueConstraint(columnNames = { "USR_NAME" })
})
public class User {


@NotNull
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="USR_ID")
private long id;

@NotNull
@Column(name="USR_FNAME")
private String firstName;

@NotNull
@Column(name="USR_LNAME")
private String lastName;


@NotNull
@Min(5)
@Max(30)
@Column(name="USR_NAME")
private String username;

@Column(name="USR_EMAIL")
private String email;

@Min(8)
@NotNull
@Column(name="USR_PASSWORD")
private String password;
}

这是一个编译良好的函数:

@PostMapping("/registration/register")
public String doRegister (@ModelAttribute @Valid User user, BindingResult result){
user.getEmail();
System.out.println(user.getFirstName());
if (result.hasErrors()) {
return "register/customRegister";
}
this.userRepository.save(user);
return "register/customRegistered";
}

但是当我运行 bootRun 并尝试访问功能时,这是我得到的异常:

org.springframework.beans.NotReadablePropertyException: Invalid property 'firstName' of bean class [com.lucasfrossard.entities.User]: Bean property 'firstName' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

但是,如果我手动包含 setter 和 getter,则效果很好。我不知道发生了什么以及如何解决它。有什么想法吗?

最佳答案

使用最新的 Lombok 1.18 很简单。 io.franzbecker.gradle-lombok 插件不是必需的。我的项目中的示例依赖项:

dependencies {
implementation "org.springframework.boot:spring-boot-starter-thymeleaf"
implementation "org.springframework.social:spring-social-facebook"
implementation "org.springframework.social:spring-social-twitter"
implementation "org.springframework.boot:spring-boot-starter-data-jpa"

testImplementation "org.springframework.boot:spring-boot-starter-test"

runtimeClasspath "org.springframework.boot:spring-boot-devtools"
runtime "mysql:mysql-connector-java"

// https://projectlombok.org
compileOnly 'org.projectlombok:lombok:1.18.4'
annotationProcessor 'org.projectlombok:lombok:1.18.4'
}

其他建议:

  1. testCompile("junit:junit") 不是必需的,因为 spring-boot-starter-test “Starter” contains JUnit .
  2. 使用implementationapi 配置而不是compile(自Gradle 3.4 起)。 How do I choose the right one?
  3. 不要为 devtools 使用compile 配置。来自 Developer Tools 的提示指南:

    Flagging the dependency as optional in Maven or using a custom developmentOnly configuration in Gradle (as shown above) is a best practice that prevents devtools from being transitively applied to other modules that use your project.

  4. 如果您使用 IntelliJ IDEA,请确保您有 Lombok plugin安装和 Annotation Processing启用。为了使新手更容易初始项目设置,您还可以将 Lombok 插件指​​定为 required .

关于java - 将 lombok 与 gradle 和 spring-boot 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40475910/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com