加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Grails初体验

发布时间:2020-12-14 17:06:49 所属栏目:大数据 来源:网络整理
导读:敏捷开发已经在业内如火如荼的开展起来,她给传统的软件开发模式带来了巨大的冲击,特别在互联网领域,敏捷已经不再是个口号。为了拥抱敏捷,各种动态语言也呈现强劲的态势,Ruby、Python等语言给Web开发带来颠覆性的革命。 Java作为当今应用最广的语言和平
敏捷开发已经在业内如火如荼的开展起来,她给传统的软件开发模式带来了巨大的冲击,特别在互联网领域,敏捷已经不再是个口号。为了拥抱敏捷,各种动态语言也呈现强劲的态势,Ruby、Python等语言给Web开发带来颠覆性的革命。
Java作为当今应用最广的语言和平台,特别是在企业级领域,Java的王牌宝座无以撼动。但是在Web开发领域,Java却越来越显疲态,繁琐的配置,低效的部署,语法的不灵活,已经深深的影响了Java在Web开发领域的发展。
但是Java领域从来不缺创新,Ruby、Python陆续的移植到Java平台中形成JRuby、JPython,而Java原生平台下Groovy的诞生,更是为Java平台注入了敏捷的元素。Groovy相比于JRuby、JPython,与Java系出同门,与Java无缝的集成,共享Java的庞大类库,对于Java程序员来说,降低了学习的门槛。而Grails(Groovy On Rails)框架的诞生,也将Ruby On Rails的模式移植过来,为Java领域的Web开发提供新的方案和活力。现在就开始我的Grails之旅,来体验她带给我们的敏捷。
首先我们需要做一些准备工作。
1、???? 下载Grails SDK。最新版本:grails-1.2.1
2、???? 开发工具:IntelliJ IDEA。IDEA是目前为止对Grails支持最好的IDE。
开始体验Grails了。
1、???? 建立工程
在第一新建Grails工程时,会提示添加Grails SDK的路径。将下载的Grails SDK解压到任意目录,最好不要包含中文的文件夹。

2、???? 建立好工程后的目录
Grails同样遵守“约定优于配置”的原则,对目录结构都有严格的约定。只要遵守这些约定去编程,将免去了繁琐的配置,做到最大程度的简化。

3、???? 运行测试,将出现以下的页面
到此,该应用算是建立成功了。
?

现在我们来体会他的便捷吧。
1、???? 在controllers文件夹下,建立HelloController
Java代码
  1. class?HelloController?{ ??
  2. ? ??
  3. ????def?index?=?{ ??
  4. ??????render?"hello?world!?my?first?grails"; ??
  5. ????} ??
  6. ? ??
  7. ?def?world?=?{ ??
  8. ????render?"hello?yt"; ??
  9. ?} ??
  10. } ??
然后访问 http://localhost:8080/pps/hello/index
http://localhost:8080/pps/hello/world
结果页面上将打印了render后面的话。就是这样简单,没有任何配置,没有定义任何请求路径的映射。通过名字和约定的后缀,自动定位到请求的方法。
2、???? 体验一下Grails的脚手架
在domain文件夹中定义一个domain类:Bookmark.groovy
Java代码
  1. class?Bookmark?{ ??
  2. ????static?constraints?=?{ ??
  3. ????} ??
  4. ?String?title; ??
  5. ?String?description; ??
  6. } ??
?
Groovy去掉了属性的getter和setter方法,采用运行期和编译期动态生成,简化了编程。
?
在controllers文件夹下定义个controller类:BookmarkController.groovy
?
class BookmarkController {
? def scaffold = Bookmark
}
def scaffold = Bookmark很关键,我们需要定义scaffold属性,指定目标类。
访问 http://localhost:8080/pps/bookmark/list
你会惊奇的发现,寥寥几行代码,基于对bookmark的增删改查都动态生成了。这在传统的java开发领域是多么不可想象。
3、???? 在domain类中定义关系
比如我们创建一个User.groovy这样一个对象,然后定义bookmark的所有者,即在Bookmark.groovy中定义User属性。
?
Java代码
  1. class?Bookmark?{ ??
  2. ?String?title; ??
  3. ?String?description; ??
  4. ? ??
  5. ?static?belongsTo?=?User???
  6. ?User?user; ??
  7. ? ??
  8. } ??
belongsTo定义了该Bookmark这个类是属于User类的。
?
在User类中定义和Bookmark的一对多关系。
?
Java代码
  1. class?User?{ ??
  2. ? ??
  3. ?String?name; ??
  4. ?String?password; ??
  5. ?int?age; ??
  6. ? ??
  7. ?static?hasMany?=?[bookmarks:Bookmark] ??
  8. ? ??
  9. } ??
hasMany定义了该用户拥有多个Bookmark
4、???? 实体映射表,配置约束关系
?
Java代码
  1. class?User?{ ??
  2. ? ??
  3. ?static?constraints?=?{ ??
  4. ????name(blank:false) ??
  5. ?}???
  6. ? ??
  7. ?String?name; ??
  8. ?String?password; ??
  9. ?int?age; ??
  10. ? ??
  11. ?static?hasMany?=?[bookmarks:Bookmark] ??
  12. ? ??
  13. ?static?mapping?=?{ ??
  14. ????table?'t_user'??
  15. ?}???
  16. ? ??
  17. }??
?
红色字体部分,constraints中配置了相应的约束,名字不能为空。mapping中配置了该实体映射的数据库表。
5、???? 配置数据源。
Grails框架中内置了HSQLDB嵌入式数据库,可以方便的开发测试。但是在实际的开发过程中,我们使用的过程中往往是Mysql,Oracle等数据库。所以我们需要配置相应的数据源。往常我们配置数据源都是配在相应的配置文件中,而Grails给我们提供了配置的文件夹conf,在该文件夹下,我们在DataSource.groovy中进行配置。
?
Java代码
  1. dataSource?{ ??
  2. pooled?=?true??
  3. driverClassName?=?"net.sourceforge.jtds.jdbc.Driver"??
  4. username?=?"sa"??
  5. password?=?"yongtree"??
  6. } ??
  7. hibernate?{ ??
  8. ????cache.use_second_level_cache=true??
  9. ????cache.use_query_cache=true??
  10. ????cache.provider_class='net.sf.ehcache.hibernate.EhCacheProvider'??
  11. } ??
  12. //?environment?specific?settings ??
  13. environments?{ ??
  14. development?{ ??
  15. ???dataSource?{ ??
  16. ??????dbCreate?=?"update"?//?one?of?'create',?'create-drop','update' ??
  17. ??????url?=?"jdbc:jtds:sqlserver://localhost:1433;DataBaseName=pps;SelectMethod=cursor"??
  18. ???} ??
  19. } ??
  20. test?{ ??
  21. ???dataSource?{ ??
  22. ??????dbCreate?=?"update"??
  23. ??????url?=?"jdbc:jtds:sqlserver://localhost:1433;DataBaseName=pps;SelectMethod=cursor"??
  24. ???} ??
  25. } ??
  26. production?{ ??
  27. ???dataSource?{ ??
  28. ??????dbCreate?=?"update"??
  29. ??????url?=?"jdbc:jtds:sqlserver://localhost:1433;DataBaseName=pps;SelectMethod=cursor"??
  30. ???} ??
  31. } ??
  32. } ??
以上我们配置了基于JTDS驱动的SQL Server数据库,ORM采用的为hibernate。和domain和controller类不同的是,配置脚本文件,没有以class开头。
?
通过上面几个简单的过程,和寥寥的几行代码,已经实现了基本的增删改查的功能,是不是非常简单,这些都是原生java语言无法比拟的。同时Grails也没有特立独行,而将自己变成孤独的战士,她依然在底层利用了Java的平台优势,整合Java的资源(hibernate、spring等),加上Groovy这个动态语言的高级特性,让我们的开发不会感到太陌生,同时又提高的开发的效率,提高了生产力。作为敏捷开发下的又一支生力军,Grails值得期待。
详细请查看: http://www.po-soft.com/blog/yongtree/840.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读