playframework - Lombok 与 Play 2

标签 playframework lombok

Lombok 与 Play Framework 2 的集成怎么样?
我真的很喜欢Lombok它使我的代码更具可读性和更少的样板。 Play Framework 也很棒。但是,如果您将它们混淆,则有很大的麻烦。

主要原因是在域类之前编译的 play 项目中的 Scala 模板。所以 Lombok,它本身就是编译器的 hack,当时不会生成访问器。

问题是:是否有任何方法可以使其发挥作用?

我在 Google 中找到了一些讨论Groups ,但他们没有提供任何合理的解决方案。那么你有成功吗?

而且.. 为什么 Play Framework 项目的人不提供一些类似 Lombok 的解决方案?不管怎样,Play 充满了代码生成魔法和影子编译……那么,为什么不呢?

最佳答案

因此,解决方法相当简单,并在 google groups 中提出。 ,但是文档中有一些晦涩的地方,我将逐步描述应该做什么。

1. 在逻辑上隔离域模型

这意味着域类不应从 View 或 Controller 调用任何内容。

2.创建包含域类的子项目

给出的一些信息here .子项目与默认 Play 的项目非常相似,创建它并不难。我在 play 的控制台中找不到任何工具来执行此操作,因此您需要手动创建一些文件夹。

首先在主项目的文件夹中创建子项目文件夹。假设您将其命名为域数据。接下来,创建所需的文件夹,如 standart app. layout 中所述.在大多数情况下,您希望在创建的子文件夹中创建简单的目录树:

app
 └ models
    └ myclasses

现在将所有域类移动到子项目的目录树。

3.配置

配置会很简单。移动到主项目的项目文件夹并打开 Build.scala 文件。这是 SBT 构建系统的构建脚本。

首先定义一些依赖项。将以下字符串添加到您的构建文件中:
val domainDependencies = Seq(
    "org.projectlombok" % "lombok" % "0.11.4"
)

这会将 Lombok 的 jar 添加到您的子项目中。现在创建子项目定义:
val domainProject = PlayProject(
                            "domain-data", appVersion, domainDependencies, path=file("domain"), mainLang=JAVA
)

路径应该指向子项目的文件夹。

最后一步是更新主项目配置,使其依赖于子项目。依赖将需要在每个主项目重建时重新构建子项目。
val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).dependsOn(domainProject)

毕竟使用终端中给出的 Play 命令启动主项目,并键入项目命令。您应该会看到您的新子项目。

4.利润

现在是使用 Lombok 安全重构现有代码的时候了。

关于playframework - Lombok 与 Play 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11062167/

相关文章:

scala - Play Framework : How to define a writable object in scala?

java - IntelliJ 将 Lombok 生成的方法突出显示为 “cannot resolve method”

java - 使用混合的 Lombok @Builder 类的 Jackson 反序列化不起作用

java - 为什么 Lombok 的 @Builder 在使用默认构造函数创建对象时删除默认字段值?

javascript - 如何在 play web 应用程序中集成 react js

java - 在 Play Framework 中使用单个函数插入/更新数据库

java - lombok项目支持openjdk 11吗?

plugins - intellij idea 15.0看不到lombok注解

scala - JsValue 过滤掉空值

database - 在 Play 中,我可以根据数据库类型应用不同的 Evolutions 吗?