我正在從傳統的Spring遷移到Grails,我對Grails per environment配置文件背後的邏輯感到困惑。我通常將環境感知代碼視爲反模式。有一個配置文件指定所有環境配置的原因是什麼,而不是爲每個環境配置不同的配置文件?使用Grails環境特定配置的優點
我看到的是,在這個Grails 的每個環境方法中,每個環境都有相同的配置文件,但是在運行時,您必須告訴應用程序它屬於哪個環境。這導致了代碼在執行中的行爲和代碼在測試中的行爲。
if(Environment == TEST){
//do something
}
if(Environment == PROD){
//do something that wasn't tested
}
使用此任何一個如果是的話,爲什麼每環境的不只是一個不同的配置,而不是
dataSource {
pooled = false
driverClassName = "org.h2.Driver"
username = "sa"
password = ""
}
environments {
development {
dataSource {
dbCreate = "create-drop"
url = "jdbc:h2:mem:devDb"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:h2:mem:testDb"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:h2:prodDb"
}
}
}
你會剛:
dataSource {
pooled = false
driverClassName = "org.h2.Driver"
username = "sa"
password = "Environment-Specific-Password"
dbCreate = "create-drop"
url = "jdbc:h2:mem:devDb"
}
然後,如果有什麼您不希望在測試中運行,在位於測試環境中的配置文件中禁用該功能。要重新提出我的問題,明確提出應用程序環境的優點(如果有的話)有什麼優勢,這不是一個衆所周知的壞主意嗎?有一點在Grails框架中感到驚訝。