spring roo
一年前,在同事的温和压力下,我尝试了Spring Roo。 我对体验感到mixed贬不一:虽然想提高生产率当然是个好主意,但我担心Roo的侵扰性。 我把它留在那里,然后关闭了与之相关的记忆部分。
现在,一年后,我了解到我最喜欢的Web框架Vaadin将目光投向了Roo插件 。 这足以让我重新站起来并重试。 本文试图尽可能诚实地描述与Roo和Vaadin插件相关的这种经验的优缺点。
纯鲁
首先,我下载了包含Roo 1.1.1的免费STS 2.5并进行了安装。 目前没有问题。 然后,我在STS中创建一个新的Spring Roo项目。 不幸的是,STS不会创建默认的Maven目录(src / main-test / java-resources):错误出现在“问题”选项卡中。 为了解决该项目,我将project
命令键入STS内Roo的shell中。 Roo抱怨我应该给它我的顶级软件包,尽管我已经使用向导完成了。 好的,我是个好人,请按要求进行:
project --topLevelPackage ch.frankel.blog.roo.vaadin
这次,Roo成功创建了上述目录以及Spring配置文件和log4j属性文件。
下一步是创建我的持久层。 CTRL + SPACE的使用确实不错,并且可以帮助您使用命令参数。 结合提示,让Roo轻松自在非常容易。
persistence setup --provider HIBERNATE --database DERBY
Roo很好地更新了我的Maven POM,并让其下载了最新版本的权限依赖项(JPA,Hibernate,Derby等)。 如果需要特定版本,我可以随时更改版本。 它甚至添加了JBoss Maven回购,因此我可以下载Hibernate。 我只需要更新数据库属性,驱动程序和URL。 呃:打开文件时,我看到Roo奇怪地用反斜杠转义了冒号字符。 我只是将示例转义的URL替换为未转义的真实URL。
同时,我在日志中发现错误:“ org.aspectj:aspectjtools:jar:1.6.11.M1的POM丢失,没有可用的依赖项信息”。 Roo使用1.6.11.M1版本更新了我的POM。 如果我检查repo1,则最新版本为1.6.10。 将1.6.11.M1替换为1.6.10可消除该错误。
现在是创建我的第一个实体的好时机:
entity --class ~.entity.Teacher --testAutomatically
STS现在抱怨目标目录不存在,就像之前抱怨源目录一样。 为了解决这个问题,我像以前一样做,我发布了一条指令。 在这种情况下,我命令Roo使用perform test
命令启动测试。 反过来,Roo在后台启动mvn test
,而Maven确实创建了目标目录。
没有字段的实体是没有用的。 让我们为老师添加一个名字和名字。
field string --fieldName firstName
field string --fieldName name
附上课程会很酷。
entity --class ~.entity.Course --testAutomatically
field string --fieldName name
focus --class Teacher
field set --fieldName courses --type Course
请注意,由于Roo是以上下文方式工作的,因此我必须使用focus
命令,以便我不会在Course
类中而是在Teacher
类中创建课程Set
。
Vaadin插件
到现在为止,关于Vaadin的信息还没有。 来了:按照Vaadin Wiki的说明,我下载了最新的Vaadin Roo插件快照,并放入了Roo本地OSGI存储库中。 为了让Roo看到新的捆绑软件,我必须重新启动它,但我不知道该如何在STS内部进行。 而是,我重新启动STS。
有魔术命令:
vaadin setup --applicationPackage ~.web --useJpaContainer false`
该命令:
- 添加Vaadin依赖性
- 添加包含图像的Web目录
- 将POM更新为战争包装
但是,当我尝试将新的Web项目添加到Tomcat时,STS抱怨它找不到候选项目。 问题在于Eclipse没有与Maven同步,因此,我的项目缺少Web界面。 解决方案:右键单击我的项目,转到Maven菜单,然后单击“更新项目配置”子菜单。 完成后,我可以像其他任何Web项目一样将项目添加到Tomcat(因为无论如何)。
启动Tomcat并转到http:// localhost:8080 / vaadin ,我可以看到Vaadin处理了我的请求。 我只是想念我的实体的视图,可以通过以下操作完成:
vaadin generate all --package ~.web.ui --visuallyComposable true
结论
好吧,那是很快的,即使不是完美的。 我确实错过了Roo的一些功能:
- 选择DAO而不是ActiveRecord,尽管Roo的观点不尽相同
- 可重用的服务层,这可以手动完成
- 我的日志记录框架的选择
至于Vaadin插件,它在更改POM之后缺少更新Eclipse文件的功能。 不熟悉m2eclipse内部工作原理的人可能会因为这种行为而浪费一些时间。
另一方面,我在短短几分钟内就有了一个简单的Web应用程序,现在我可以更新选择的方式。 CTRL+SPACE
和hint
是Roo杀手级功能。 而且,如显示的Vaadin附加组件一样,您可以添加自己的插件缺少的任何功能(或使用已经可用的插件)。 不过,对我而言真正重要的是,如果没有它,我什至不会考虑使用Roo,因为它可以通过3个简单的步骤就可以完全移除 。 因此,您可以利用Roo的生产力提高功能,而不必告诉任何人,而只是在将项目传递给维护团队之前将Roo删除。
感谢Joonas Lehtinen和Henri Sara在Roo Vaadin插件方面所做的工作,并提前将解释Vaadin部分的Wiki草稿发送给我。
下面是来源本文中的Maven / STS格式。
更进一步:
翻译自: https://blog.frankel.ch/playing-with-spring-roo-and-vaadin/
spring roo