標題為《Grails探
索之資源文件的讀取》,但其實是Groovy語言的資源
文件的讀取,任何使用Groovy語言的地方都可以使用這種方法讀取資源文件。因為我們使用Groovy語言的地方,大多要體現在使用Grails上,而
且作為一個Grails項目,使用資源文件是必不可少的。因此,我還是把標題定為“Grails探索之資源文件的讀取”。
首先,我們來看看Grails的
資源文件,下面的例子是Grails的數據源配置文件的一部分:
dataSource {
pooled = false
driverClassName = "oracle.jdbc.driver.OracleDriver"
username = "test"
password = "test"
dialect = org.hibernate.dialect.Oracle9Dialect
}
它就是一種所謂的“DSL”編碼,的確比我們常規的properties文件要
來的簡單,如是properties文件的話,上面的代碼就會變成如下的樣子:
dataSource. pooled = false
dataSource. driverClassName =
"oracle.jdbc.driver.OracleDriver"
dataSource. username = "test"
dataSource. password = "test"
dataSource. dialect =
org.hibernate.dialect.Oracle9Dialect
對比上面的兩個例子,可以看到,Groovy語言的DSL配置文件的確是要簡單
多了。但是,我們自己要如何才能讀取形如dataSource.groovy這樣的配置文件呢?
答案是ConfigSlurper
類。是的,在
Groovy
語言中,我們都通過
ConfigSlurper
類來操作配置文件,在
Grails
里也不例外。
下面來看一個簡單的例子,假如我們有一個
test.groovy
的文件,內容如下:
test
{
name =
'Tom'
age =
33
sex =
'male'
}
首先,我們需要讀入“
test.groovy
”文件:
def
config =
new
ConfigSlurper().parse(
new
File(
"${System.properties['user.dir']}/configSlurper/test.groovy"
).toURL())
注意,System.properties['user.dir']
獲取的是當前項目的更目錄,其他就沒什么好說的了。
然后來讀取配置文件的內容:
println
config.
test
.name
println
config.
test
.age
println
config.
test
.sex
注意到,我們讀取配置文件的內容采取的是一種類型如“
Xpath
”的方式,在
Groovy
語言里被成為“
Gpath
”。
即“
config
”代表的是配置文件,即根節點,然后下索到一級節點,即“
test
”,最后是二級節點,即“
name
”、“
age
”等。
上面的代碼的運行結果為:
Tom
33
Male
果然把上面的配置文件讀取出來,如此類推,我們可以用這樣的方法來做一些比較復
雜的配置文件。在這里就不再說明了。
在Grails項
目中,我們有一個統一的放置配置文件的地方,即“../grails-app/conf”,
它是在項目的“grails-app/conf”目錄里。我們可以在該目錄下再建一個
“user”目錄,供與項目業務相關的配置文件使用。
比如,在“grails-app/conf
/user”目錄里有一個測試配置文件“Test.groovy”,內容如下:
package
user;
test
{
name =
'Tom'
age =
'30'
}
然后,我們就可以使用如下代碼對它進行讀取了:
def
config =
new
ConfigSlurper().parse(
new
File(
"${System.properties['user.dir']}/grails-app/conf/user/Test.groovy"
).toURL())
天蒼蒼,野茫茫,風吹草底見牛羊