我可以使用Grails但是使用Java编写代码吗?

时间:2014-02-23 06:04:42

标签: java grails groovy frameworks

我已经听过并阅读了很多关于Grails框架的内容。我从他们的网站上了解到,这是一个旨在针对Groovy语言的框架。

Grails看起来像一个更适合中小型应用程序的框架,而不像Spring和Struts这样需要设置太多配置的框架。但与此同时,由于不够成熟,难以找到开发人员等原因,我不太愿意直接进入Groovy语言。

我想知道我是否可以使用Java而不是Groovy,并且还可以利用Grails的优势(或者在Rails之后建模的东西)。那么,我可以使用Grails框架但使用Java语言编写代码吗?尽管Groovy看起来像Java的超集,并且它们都可以相互无缝地工作,但我找不到一个具体说明我是否可以使用Grails并用Java编写的地方。

2 个答案:

答案 0 :(得分:12)

你可以,但你将失去Grails的所有好处。像动态方法,工件,控制器,大多数插件等。我不认为您将能够使用Java中的GORM(数据库映射)。

你将失去什么:

  • GORM和域名 - >你可以使用Hibernate
  • 控制器和网址映射 - > Spring MVC
  • 服务 - >您可以使用普通的老式Spring Bean,它基本上是相同的东西
  • 大多数插件,因为大多数插件都基于一些Groovy功能,动态方法或GORM

所以,基本上你只需要有限的GSP视图的标准Spring MVC应用程序,也许更方便的配置应用程序,更容易使用静态文件/资源​​和i18n。

PS你总是可以用类似Java的语法编写Groovy代码。在这种情况下使用所有Grails功能(慢慢移动到Groovy,你会看到)

PPS不乏Groovy开发人员,顺便说一下。每个Java开发人员都可以开发Groovy。阅读Groovy for Java程序员的一些介绍只需要2-3个小时。

答案 1 :(得分:3)

Groovy是Java的超集,因此您可以在Groovy文件中编写纯Java,从而利用Grails的工具。需要注意的是,您需要为文件提供.groovy扩展名,以便Groovy对其进行处理。

如果你想坚持使用纯Java,你可能更好地坚持使用纯Java框架。另一方面,也许你有很好的机会学习Groovy。 Groovy的学习曲线非常浅(毕竟,你可以编写标准的Java)。

使Grails如此快速和简单的部分原因在于它大量使用Groovy,特别是Controllers(可以)看起来像这样:

def index = {
  def model = Person.findAllByCity("Oxford")
  respond model
} 

Groovy的最大好处(恕我直言)(以及为什么在没有它的情况下使用Grails并不可行)是Person.findAllByCity("Oxford")方法调用,其中GORM根据域类的属性在运行时动态创建方法。

虽然你无法完全摆脱Groovy,但可以用更加Java的方式编写上述内容:

void index = {
  List<Person> model = Person.findAllByCity("Oxford") // This is still a dynamic method added by the Groovy MOP
  respond(model)
} 

请注意,我根本没有测试过上面的代码。