第8章 Spring Boot集成Groovy,Grails开发
第8章 Spring Boot集成Groovy,Grails开发
本章介绍Spring Boot集成Groovy,Grails开发。我们将开发一个极简版的pms(项目管理系统)。
Groovy和Grails简介
Groovy简介
Groovy 是一种动态语言,它在 JVM 上运行,并且与 Java 语言无缝集成。
Groovy 可以大大减少 Java 代码的数量。在 Groovy 中,不再需要为字段编写 getter 和 setter 方法,因为 Groovy 会自动提供它们。不再需要编写 for Iterator i = list.iterator() 来循环遍历一系列的项;list.each 可以做相同的事情,而且看上去更简洁,表达更清晰。简言之,Groovy 就是 21 世纪的 Java 语言。[2]
Groovy 不会替代 Java 语言 — 它只是提供了增强。您可以很快地掌握 Groovy,因为说到底,Groovy 代码就是 Java 代码。这两种语言是如此兼容,甚至可以将一个 .java 文件重命名为一个 .groovy 文件 — 例如,将 Person.java 改为 Person.groovy — 从而得到一个有效的(可执行的)Groovy 文件(虽然这个 Groovy 文件并没有用到 Groovy 提供的任何语法)。
Grails简介
Grails是一套用于快速Web应用开发的开源框架,它基于Groovy编程语言,并构建于Spring、Hibernate等开源框架之上,是一个高生产力一站式框架。
Grails这个独特的框架被视为是提升工程师生产效率的动态工具,因为其干脆的API设计,合理的默认值以及约定架构。与java的无缝集成使得这个框架成为世界上众多框架中的首选。一系列强大的特性,如基于sping的依赖注入和各式各样的插件,可以提供创建现代基于web的app的所有需要的东西。
我们使用Grails框架。就像 Rails 与 Ruby 编程语言联系非常紧密一样,Grails 也离不开 Groovy。
DRY(Don't Repeat Yourself,不要重复自己)
约定优于配置(Convention over Configuration)
DRY和约定优先于配置的思想,是由Rails兴起并迅速被广泛接收和欣赏的Web框架新思路。Grails作为JEE世界的Rails,把这些最前沿的设计理念带入已显得陈旧的JEE社区,拥有鲜明突出的特点,以及由此带来的优秀的开发效率。
对Grails来说,Groovy是其能够实现灵活多变的快速开发,区别于其他运行于JVM之上的Web框架的核心技术。
Groovy的动态特性是其最大亮点,在这方面几乎不输于Ruby等其他热门的动态语言。[3]
Grails实现原理
基于Spring MVC的控制器层
构建于Gant 上的命令行脚本运行环境,内置Tomcat服务器,不用重新启动服务器就可以进行重新加载
基于Spring的MessageSource核心概念,提供了对国际化(i18n)的支持
基于Spring事务抽象概念,实现事务服务层[1]
Github:https://github.com/grails
官网:https://grails.org/
数据库的对象关系映射层使用GORM
我们使用 Grail 对象关系映射(Grails Object Relational Mapping,GORM)API 进行数据库层的持久化工作。
安装Grails 3 开发环境
浏览器访问 http://www.grails.org/Download,下载,解压,设置环境变量即可。具体步骤如下:
1.下载并解压 grails.zip。 2.创建一个 GRAILS_HOME 环境变量。 3.将 $GRAILS_HOME/bin 添加到 PATH中。
如果你的电脑上有SDKMAN! (The Software Development Kit Manager),可以直接命令行自动安装Grails最新稳定版本:
$ sdk install grails
安装完毕,验证一下:
$ grails -v| Grails Version: 3.2.8 | Groovy Version: 2.4.10| JVM Version: 1.8.0_40
OK, grails开发环境搞定。我们可以看到,grails依赖的Groovy,JVM环境版本。
创建Grails项目
让我们来体验JVM上的Ruby on rails式的命令行自动工程生成的快感吧!
命令行直接运行:
$ grails create-app pms Resolving dependencies..| Application created at /Users/jack/book/pms
我们就生成了一个grails工程demo,目录如下:
. ├── build.gradle├── gradle│ └── wrapper│ ├── gradle-wrapper.jar│ └── gradle-wrapper.properties├── gradle.properties├── gradlew├── gradlew.bat├── grails-app│ ├── assets│ │ ├── images│ │ │ ├── apple-touch-icon-retina.png│ │ │ ├── apple-touch-icon.png│ │ │ ├── favicon.ico│ │ │ ├── grails-cupsonly-logo-white.svg│ │ │ ├── skin│ │ │ │ ├── database_add.png│ │ │ │ ├── database_delete.png│ │ │ │ ├── database_edit.png│ │ │ │ ├── database_save.png│ │ │ │ ├── database_table.png│ │ │ │ ├── exclamation.png│ │ │ │ ├── house.png│ │ │ │ ├── information.png│ │ │ │ ├── shadow.jpg│ │ │ │ ├── sorted_asc.gif│ │ │ │ └── sorted_desc.gif│ │ │ └── spinner.gif│ │ ├── javascripts│ │ │ ├── application.js│ │ │ ├── bootstrap.js│ │ │ └── jquery-2.2.0.min.js│ │ └── stylesheets│ │ ├── application.css│ │ ├── bootstrap.css│ │ ├── errors.css│ │ ├── grails.css│ │ ├── main.css│ │ └── mobile.css│ ├── conf│ │ ├── application.yml│ │ ├── logback.groovy│ │ └── spring│ │ └── resources.groovy│ ├── controllers│ │ └── pms│ │ └── UrlMappings.groovy│ ├── domain│ ├── i18n│ │ ├── messages.properties│ │ ├── messages_cs_CZ.properties│ │ ├── messages_da.properties│ │ ├── messages_de.properties│ │ ├── messages_es.properties│ │ ├── messages_fr.properties│ │ ├── messages_it.properties│ │ ├── messages_ja.properties│ │ ├── messages_nb.properties│ │ ├── messages_nl.properties│ │ ├── messages_pl.properties│ │ ├── messages_pt_BR.properties│ │ ├── messages_pt_PT.properties│ │ ├── messages_ru.properties│ │ ├── messages_sv.properties│ │ ├── messages_th.properties│ │ └── messages_zh_CN.properties│ ├── init│ │ └── pms│ │ ├── Application.groovy│ │ └── BootStrap.groovy│ ├── services│ ├── taglib│ ├── utils│ └── views│ ├── error.gsp│ ├── index.gsp│ ├── layouts│ │ └── main.gsp│ └── notFound.gsp├── grails-wrapper.jar├── grailsw├── grailsw.bat├── settings.gradle└── src ├── integration-test │ └── groovy ├── main │ ├── groovy │ └── webapp └── test └── groovy29 directories, 62 files
这真的是一键生成。
我们可以直接使用下面的命令运行这个工程:
$ grails run-app
它会自动下载gradle-3.4.1-bin.zip(通常会很慢):
| Resolving Dependencies. Please wait... Downloading https://services.gradle.org/distributions/gradle-3.4.1-bin.zip
如果我们本地有gradle环境,我们也可将此工程导入idea,配置一下本地的gradle环境。如下图所示:
作者:东海陈光剑
链接:https://www.jianshu.com/p/4a9027bd561d
共同学习,写下你的评论
评论加载中...
作者其他优质文章