本文将带领大家快速地了解Grails的基本配置和环境的相关概念和知识。
Grails应用的配置文件都放在grails-app/conf下,典型的文件有:
- BootStrap.groovy:指定应用启停时的行为
- BuildConfig.groovy:构建环境的配置
- Config.groovy:主配置文件
- DataSource.groovy:数据源配置
- xxxFilters.groovy:定义了过滤器
- UrlMappings.groovy:指定URL Mapping
Grails的配置有2个主要特点:
- 建立在ConfigSlurper基础之上,这种配置语法类似Java的properties文件,但允许你使用Java类型和Groovy语法。这样,你完全可以将配置选项作为变量在配置文件中重复使用,简化了配置的书写。
- 引入了环境概念,可以让你针对不同环境准备多套配置。缺省的环境有development、test、production。
介绍完毕,现在让我们来看看Grails中配置的书写。首先,要使用配置变量,当然就需要先定义它:
//注意配置变量前不要加任何类型定义信息:如def、boolean foo.bar.hello = "world"
接着,就是在程序中使用这个变量了,有两种方法:
//法1:使用grailsApplication grailsApplication.config.foo.bar.hello //法2:使用ConfigurationHolder ConfigurationHolder.config.foo.bar.hello
看过了基本的配置语法,该是了解定义环境的时候了。这里DataSource.groovy是个好例子:
dataSource { //公共配置 } environments { development { dataSource { //开发环境配置 //如开发库用户名/密码 } } test { …… } production { …… } }
现在,通过在命令行中指定环境来使用不同环境下的配置:grails [environment] [command name]。如:
//使用测试环境来打包 grails test war
Grails还允许你自定义环境,配置同上,在运行时则需要通过grails.env参数来告知当前环境。如:
grails -Dgrails.env=UAT run-app
除了在命令行中使用,我们还可以在BootStrap.groovy中使用:
class BootStrap { def init = { servletContext -> environments { development { …… } test { …… } production { …… } } } def destroy = { } }
也可以在程序中用它来定义环境相关的逻辑(注意下例代码和上面代码的不同):
Environment.executeForCurrentEnvironment { production { …… } development { …… } }
相关方法:
- 获得当前环境值:Environment.current
- 执行环境相关的逻辑:Environment.executeForCurrentEnvironment
至于基本的配置选项,这里就不再一一列出,请参见文档。其中值得注意的是“grails.views.default.codec”,要想减少站点受到XSS***的风险,请设置为“html”。
转载于:https://blog.51cto.com/bcptdtptp/303248