【发布时间】:2011-09-20 20:11:09
【问题描述】:
我知道 Spring Roo 还不支持多项目,但我需要两个站点在相同的模型/控制器(大约 50 个模型)和相同的数据库上运行,而无需更新两个应用程序上的模型。
我在想我可以在主项目中生成模型和控制器,并让子项目使用符号链接的模型和控制器。这还是感觉我在复制很多代码,有没有更好的方法来达到同样的效果?
【问题讨论】:
标签: spring-roo
我知道 Spring Roo 还不支持多项目,但我需要两个站点在相同的模型/控制器(大约 50 个模型)和相同的数据库上运行,而无需更新两个应用程序上的模型。
我在想我可以在主项目中生成模型和控制器,并让子项目使用符号链接的模型和控制器。这还是感觉我在复制很多代码,有没有更好的方法来达到同样的效果?
【问题讨论】:
标签: spring-roo
如果您正在考虑为使用 Spring Roo 构建的同一产品的不同客户端定制 UI,您可以使用版本控制系统轻松实现上述目标。
只需为两个分支分叉您的主源,并在模块发生更改时不断更新主干并将它们拉到分支,同时在分支中维护单独的 UI 自定义。
此外,您可以等待 Spring Roo 1.2 版本,它已经承诺为 Spring Roo 项目提供多模块 maven 项目支持 (ROO-120)。
与 Roo 一起干杯,一切顺利!
【讨论】:
作为一种解决方法,我尝试为不同的业务逻辑创建单独的 Roo Web 项目。然后我修改 pom.xml 中的打包,从 WAR 到 JAR,以便在没有 web 资源的情况下打包它们(注意:由于控制器是 POJO 类,它们包含在 JAR 中)
我称它们为辅助模块。
最后,我创建了一个 Roo Web 项目,将帮助模块作为 maven 依赖项导入。
我称之为主模块。
第一个问题是在主模块的 JPA 扫描中包含辅助模块的类。我需要这样做,因为模块之间的顶级包不同。
为了实现这一点,您需要在主模块中编辑 persistence.xml 并为每个外部 JPA 实体添加条目(是的,如果需要,添加 50 个)
更多解释请参见:http://www.manning-sandbox.com/thread.jspa?threadID=46259&tstart=0。
第二个问题是使用 JAR 中包含的控制器。这里的问题是 ApplicationConversionServiceFactoryBean,您需要在主模块的辅助模块中复制每个 ApplicationConversionServiceFactoryBean 的代码,因为 webmvc-config.xml 只创建其中一个。
仅当您拥有具有复合键的实体时才会出现问题,因为它们在控制器中被 @Autowired 以便进行键的对话以将它们用作 REST 参数。
更多详情请参阅http://www.manning-sandbox.com/thread.jspa?threadID=46337&tstart=0。
最后一个问题可能是为交换 AJAX 调用中的 REST 参数而创建的 JSON 特性,如上所述,如果您有复合键。此外,如果您尝试使用 JQuery 而不是 Dojo。
我还没有解决方案,但是项目快结束了,所以我相信会有一些帮助。
顺便说一下,我接受建议。
【讨论】:
可能还有另一种方法来完成它,使用 Spring 解析器...如果有兴趣,您可以查看我在 http://pragmatikroo.blogspot.com/2011/04/spring-roodynamic-clients-multiple.html 上关于此事的文章。
这种方法在具有传统 UI 客户端且需要同时支持移动客户端的网站上特别有用。
希望对你有帮助。
B.罗加兹 杰德
【讨论】: