2014-02-25 87 views
2

Global.scala中的代碼執行時,application.conf已經加載了嗎?我問,因爲我試圖從Global.scala讀取一些配置項目,我總是得到None。有什麼解決方法嗎?什麼時候播放加載application.conf?

回答

1

在Java中它的可用beforeStart(Application app)已經

public class Global extends GlobalSettings { 
    public void beforeStart(Application app) { 
     String secret = Play.application().configuration().getString("application.secret"); 
     play.Logger.debug("Before start secret is: " + secret); 
     super.beforeStart(app); 
    } 
} 

,因爲它的要求,即在配置數據庫連接,最有可能Scala works the same way(無法查詢)

+1

在我的情況下,正確的地方是onLoadConfig ...但你的答案真的很有幫助。非常感謝你。 – j3d

+0

添加適當的解決方案,然後爲其他人:) – biesior

+1

好吧,看看下面我的完整答案:-) – j3d

1

這裏下面是如何做到這之後它讀取配置已加載,但之前的應用程序實際上開始:

import play.api.{Configuration, Mode} 
import play.api.GlobalSettings 
import java.io.File 
import utils.apidocs.InfoHelper 

object Global extends GlobalSettings { 

    override def onLoadConfig(
    config: Configuration, 
    path: File, classloader: 
    ClassLoader, 
    mode: Mode.Mode): Configuration = { 

    InfoHelper.loadApiInfo(config) 
    config 
    } 
} 

在這裏,下面,只爲您的信息,是個的InfoHelper.loadApiInfo –Ë源,它只是加載API信息爲揚鞭UI

package utils.apidocs 

import play.api.Configuration 
import com.wordnik.swagger.config._ 
import com.wordnik.swagger.model._ 

object InfoHelper { 

    def loadApiInfo(config: Configuration) = { 
    config.getString("application.name").map { appName => 
    config.getString("application.domain").map { appDomain => 
    config.getString("application.emails.apiteam").map { contact => 
     val apiInfo = ApiInfo(
     title = s"$appName API", 
     description = s""" 
      Fantastic application that makes you smile. You can find our 
      more about $appName at <a href="//$appDomain">$appDomain</a>. 
     """, 
     termsOfServiceUrl = s"//$appDomain/terms", 
     contact = contact, 
     license = s"$appName Subscription and Services Agreement", 
     licenseUrl = s"//$appDomain/license" 
    ) 

     ConfigFactory.config.info = Some(apiInfo) 
    }}} 
    } 
} 

我希望它能幫助。

相關問題