3

我开始将一些 Groovy 类合并到我的 Maven 构建的 Spring 应用程序中,主要是为了减少许多 POJO 和值对象类的样板。(相比之下,我一直在使用 Roo 来处理样板文件,但随着 Spring 和 Maven 的更新版本,Roo 变得越来越不稳定。)我的 Spring Data MongoDB 类之一如下所示:

@Document
class ConcreteProcessingJob implements ImageAssetProcessingJob {

    @Id
    String id

    @Indexed(unique = true, sparse = true)
    String jobId

    @NotNull
    @Past
    Date started

    // more of the same
}

由于这些只是普通的结构对象,我不需要也不想要 Groovy 的元分类和调用选址的复杂性和开销。我只想要一个相当于 POJO 的东西。我尝试用 注释类@CompileStatic,但是虽然字节码中的一些调用已替换invokedynamicinvokevirtual,但我仍然得到.class包含几个大型 Groovy 方法和数据结构的巨大文件;一个只有一个空子类的类,它具体化了一个通用超类,它的字节码超过 5k。

我已经从 Eclipse 和命令行中编译了代码,两次都使用groovy-eclipse-compiler(2.8.0-01),虽然有一些细微的差异,但字节码中仍然包含所有动态“膨胀”。我引入的 Groovy 依赖项是 2.3.2,我的 Java 目标设置为 1.7。

甚至整个类都被标记@CompileStatic为将所有 Groovy 元数据和代码编译到其中吗?如果是这样,还有其他方法可以禁用它吗?

4

0 回答 0