2016-04-25 26 views
7

Attualmente sto utilizzando Play.current nel modo seguente.Play.current è obsoleto in gioco 2.5

import play.api.{Logger, Play} 

object ApplicationConfig { 

    val app = Play.current 
    def getConfInt(key: String): Option[Int] = { 
    val result = app.configuration.getInt(key) 
    result 
    } 
} 

Dal momento che la migrazione a 2,5, ho un avvertimento dicendo che è deprecato con

"Questo è un riferimento statico per applicazione, l'impiego DI anziché"

Tuttavia, il doc non dice esattamente come dovrei usare DI invece.

Grazie

risposta

6

A seconda del caso d'uso ora si dovrebbe usare Environment, ApplicationLifecycle e Configuration invece di Application

Nel tuo caso si sono effettivamente interessati alla configurazione di modo che il modo per fare questo in Play 2.5.x sarebbe così:

class HomeController @Inject() (configuration: play.api.Configuration) extends Controller { 

    def config = Action { 
    Ok(configuration.underlying.getInt("some.config.key")) 
    } 

} 

L'esempio fornito è per un controller ma è possibile utilizzare questo approccio anche su altri punti della tua applicazione. Semplicemente non mi piace l'oggetto ApplicationConfig che hai fornito - considero refactoring quando la migrazione a giocare 2.5.x - DI è ora la strada da percorrere

+0

E 'bene fare: configuration.getInt ("some.config.key ") .getOrElse (-1)? – Scipion

+0

Questo va benissimo! Puoi vedere il documento API qui: https://www.playframework.com/documentation/2.5.x/api/scala/index.html#[email protected]%28path:String%29:Option[Int] – Anton