在 Spring Roo 中,我使用本教程和我的自定义 xsd 来生成对象。
之后,我使用了命令控制器 all ~.web,生成了控制器但没有 CRUD 功能。
如果我在 Roo 控制器中使用 CRUD 功能制作手动对象,则会生成。知道有什么问题吗?
就我而言,模式文件 xsd 对于 REST 数据交换很重要。
2 回答
您所指的教程确实解释了如何根据提供的 xml Schema 创建 Java(域)模型,但是controller all ~.web命令当前(版本 1.1.0)仅创建控制器和相应的 CRUD 函数用于实际Roo(数据库)实体。由于生成的 Java 类未标记为 Roo 实体,控制器命令不会创建您预期的 CRUD 命令,正如您所说,它将为手动创建的实体执行这些操作,因为这些实体被标记为 Roo 实体(请参阅@RooEntity注释这些)。
正如本教程还指出的,当您使用 Spring Roo jaxb 插件时,您需要手动更新控制器和视图 (*.jspx) 文件以实现 CRUD 功能。我知道,通过检查论坛和 Jira 问题,目前有一些关于让 Spring Roo 为普通(非实体)bean 创建基本 CRUD 功能的想法(参见问题ROO-344和它相关的 ROO-277 问题),但这些目前只是想法,很可能不会在不久的将来实施。因此,当使用 XML 模式作为 Spring Roo 域模型的基础时,您仍然需要进行大量手动编码才能拥有基本的 CRUD 应用程序,而不是使用数据库作为生成域模型的基础,因为它基本上是在 Roo shell 中执行几个命令,然后你就完成了。
如果您的 XML 模式只是您的域模型的定义,并且您确实希望应用程序将数据存储在数据库中并从数据库中检索,而不是调用 REST Web 服务来检索和存储更改,您可以尝试使用用于生成模型然后注释生成的类的 jaxb 插件,但由于我自己之前没有这样做过,我不确定这是否可行,但它可能值得一试。
Spring Roo 在 .java 源文件旁边生成 AspectJ (.aj) 文件。因此,您不会在源文件中看到这些方法。它们在 .aj 文件中,但在编译后出现在生成的 .class 文件中。