Search code examples
scalaplayframeworkguice

Inject in scala object


I'm using Play framework 2.5 and try to inject WSClient in a scala object used in my controllers.

import play.api.libs.concurrent.Execution.Implicits.defaultContext

    object MyObject {

        @Inject
        var ws: WSClient = null

        def doSomething() = { // use wsclient }

    }

I use MyObject in several controllers and when calling doSomething() wsclient is null.


Solution

  • You should define MyObject as class and inject wsclient to it:

    class MyObject @Inject()(ws: WSClient) {
        def doSomething() = { /* use wsclient */ }
    }