2014-02-25 83 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) 
    }}} 
    } 
} 

我希望它能帮助。

相关问题