grails备忘录(一)

Grails是一套用于快速Web应用开发的开源框架,它基于Groovy编程语言,并构建于Spring、Hibernate和其它标准Java框架之上,从而为大家带来一套能实现超高生产力的一站式框架。

Grails命令

首先看一个例子,用命令创建项目:

grails create-app helloworld
cd helloworld
grails
//按Tab键可寻求帮助
run-app    //运行程序,在浏览器http://localhost:8080打开
create-controller hello    //创建一个Controller

启动时端口参数修改:grails -Dserver.port=8090 run-app

测试应用:grails test-app

部署应用:grails war

部署dev环境(默认部署的是production环境):grails dev war

部署应用时设置JVM参数:-server -Xmx768M -XX:MaxPermSize=256m

具体的命令可参考:Command Line

Grails目录结构

Grails遵循COC(Convention over Configuration,约定由于配置)原则。

├─gradle
│  └─wrapper
├─grails-app            //Grails程序的核心目录
│  ├─assets                //静态资源
│  │  ├─images
│  │  │  └─skin
│  │  ├─javascripts
│  │  └─stylesheets
│  ├─conf                //配置文件
│  │  └─spring
│  ├─controllers        //Web Controller,MVC中的C
│  │  └─helloworld
│  ├─domain                //领域对象
│  ├─i18n                //国际化
│  ├─init                //初始化代码
│  │  └─helloworld
│  ├─services            //Service层
│  ├─taglib                //自定义标签库
│  ├─utils                //工具库
│  └─views                //视图,MVC中的V
│      └─layouts
└─src
    ├─integration-test    //集成测试代码
    │  └─groovy
    ├─main                //扩展的代码
    │  ├─groovy
    │  └─webapp
    └─test                //单元测试
        └─groovy

配置文件

默认配置

构建配置文件:build.gradle

运行时系统配置文件:grails-app/conf/application.yml

日志配置文件:grails-app/conf/logback.groovy

groovy获得配置文件的属性值:

//在Controller中
def recipient = grailsApplication.config.getProperty('foo.bar.hello')

//在Service中
GrailsApplication grailsApplication    //全局变量
def recipient = grailsApplication.config.getProperty('foo.bar.hello')

//用Spring PropertySource 的方法
@Value('${foo.bar.hello}')
String recipient

多数据源配置,配置名字不同的数据源。domain中可以在static mapping = { datasources(['lookup', 'DEFAULT']) }代码块中引用数据源。

自定义配置

继承GrailsAutoConfiguration。

class Application extends GrailsAutoConfiguration {

    /**
     * 自动扫面,获得所有包的名称
     * @return
     */
    @Override
    Collection<String> packageNames() {
        super.packageNames() + ['my.additional.package']
    }

    /**
     * 注册Bean
     * @return
     */
    @Bean
    MyType myBean() {
        return new MyType()
    }

    /**
     * 在GrailsApplication的生命周期GrailsApplicationLifeCycle中执行
     * doWithSpring, doWithApplicationContext等
     * @return
     */
    @Override
    Closure doWithSpring() {
        {->
            mySpringBean(MyType)
        }
    }

}

插件

创建插件

//此命令在含有plugin或者grails项目的目录底下执行不成功,必须在没有它们的目录下执行
grails create-plugin [PLUGIN NAME]
grails create-plugin [PLUGIN NAME] --profile=plugin

在src/main/groovy目录底下,你将发现一个以GrailsPlugin结尾的类。在此类中,你可以为插件添加title、author、description等信息。

安装本地插件

运行grails install,grails会列出本地Maven缓存中已有的插件。选择一个安装。

创建Groovy脚本: create-script [NAME]。Grails会在src/main/scripts底下创建一个脚本文件。

创建命令:grails create-command [Command Name]。Grails会在grails-app目录下创建一个commands文件夹,该文件夹下会有一个以命令名命名的文件夹,会有一个以Command结尾的Groovy类。


参考文档:

OSChina-grails