Grails 1.2参考文档速读(4):第3章剩余内容

本系列的2、3部分对参考文档第3章的配置基础、环境和日志配置部分进行了快速扫描,在这一篇中,让我们完成第3章的剩余部分。
GORM无疑是Grails中的亮点,在第3章中关于它的配置选项有2个:
1. grails.gorm.failOnError,save过程的验证失败将抛出异常。以下是它的配置方法:
  • 应用于所有Domain Class:grails.gorm.failOnError=true
  • 应用于指定Domain Class:grails.gorm.failOnError = [包名1, 包名2]
2. grails.gorm.autoFlush,如果为true,在save、merge和delete时就会对session进行flush。
GORM虽然不错,但要是不配置数据源的话,那也是空有一身好武艺。Grails应用中的数据源配置是发生在DataSource.groovy中的,好在Grails缺省已经做了大部分的工作,因此大多数时候我们需要改动的也就是:驱动名、数据库URL、用户名、密码等。参考文档中列出了配置常用的参数,在此就不一一列出,只单独提一下logSql。这个参数是你在调试最有可能用到的,它的作用是打印Hibernate产生的SQL。
有时候,你可能想把数据源配置成JNDI,对此Grails也可以很容易的与之配合,配置很简单,在数据源中直接引用JNDI名即可:
dataSource {
        jndiName = "java:comp/env/myDataSource"
    }
对于数据库模式的创建选项,dbCreate,使用缺省的配置可以满足大多数情况。但如果你有遗留数据库时需小心。此外,Grails目前不支持Rails风格的数据迁移,但已有两个插件支持类似的功能:
针对开发各阶段,存在5个依赖范围:
  • build,构建系统的依赖
  • compile,编译期所需依赖
  • runtime,运行期所需依赖
  • test,测试期所需依赖
  • provided,部署期(非War部署期)所需依赖
依赖定义语法:
  • 方式1,范围 "group:name:version"。如:runtime 'com.mysql:mysql-connector-java:5.1.5'
  • 方式2,范围 group:"...", name:"…",version:"…"。如runtime group:'com.mysql', name:'mysql-connector-java', version:'5.1.5'
定义多个依赖如下例:
runtime 'com.mysql:mysql-connector-java:5.1.5',
     'net.sf.ehcache:ehcache:1.6.1'
    
    runtime(
          [group:'com.mysql', name:'mysql-connector-java', version:'5.1.5'],
          [group:'net.sf.ehcache', name:'ehcache', version:'1.6.1']
    )
依赖库定义了依赖存放的位置,在repositories中定义。缺省为grailsHome(),来自Grails的安装所带jar。如果依赖库在远程,那么:
  • Maven,mavenCentral()
  • SpringSource,ebr()
  • 某个Maven库:mavenRepo "url"
  • 自定义:resolver new URLResolver(...)
 
依赖库的定义示例(摘自BuildConfig.groovy):
repositories {        
        grailsPlugins()
        grailsHome()
        // uncomment the below to enable remote dependency resolution
        // from public Maven repositories
        //mavenLocal()
        //mavenCentral()
        //mavenRepo "http://snapshots.repository.codehaus.org"
        //mavenRepo "http://repository.codehaus.org"
        //mavenRepo "http://download.java.net/maven/2/"
        //mavenRepo "http://repository.jboss.com/maven2/"
    }
如果依赖库需要认证,则定义在credentials中:
credentials {
     realm = ".."
     host = "localhost"
     username = "myuser"
     password = "mypass"
    }
以上内容也可以被包含在USER_HOME/.grails/settings.groovy中的grails.project.ivy.authentication设置中,设置示例:
grails.project.ivy.authentication={ 
        credentials{
            ...
        } 
    }
依赖解析块内的log提供了日志功能,使用方式同前。请参见
网络管理员 还可以利用本地的文件系统作为依赖库:flatDir name:'myRepo', dirs:'path'。
inherits("global") {
     excludes "oscache", "ehcache"
    }
针对依赖,Grails还新添了dependency-report命令来产生依赖报告。使用:
  • 产生整体报告:grails dependency-report
  • 产生阶段相关的报告:grails dependency-report 阶段名,如grails dependency-report runtime。
除了应用,你同样可以给插件指定依赖关系,方法同前。对于安装插件的应用将自动继承插件的依赖,除非插件在自己的依赖解析定义中使用了exported=false:
compile( 'org.hibernate:hibernate-core:3.3.1.GA') {
 exported = false
}
如果插件的依赖与应用相冲突,应用可以同plugin()来控制插件如何解析依赖。示例:
plugin("hibernate") {
    compile( 'org.hibernate:hibernate-core:3.3.1.GA') {
           excludes 'ehcache', 'xml-apis', 'commons-logging'
    }
    compile 'org.hibernate:hibernate-annotations:3.4.0.GA',
           'org.hibernate:hibernate-commons-annotations:3.3.0.ga'
    runtime 'javassist:javassist:3.4.GA' 
}
参考文档中还说明了Grails工程如何跟Maven集成的方法,考虑到Maven使用相对复杂,且对于单个工程的意义不大,这里就不重点阐述了。

 

你可能感兴趣的:(职场,grails,休闲,1.2)