为了账号安全,请及时绑定邮箱和手机立即绑定

第8章 Spring Boot集成Groovy,Grails开发

标签:
SpringBoot

第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环境。如下图所示:

webp



作者:东海陈光剑
链接:https://www.jianshu.com/p/4a9027bd561d


点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消