這將是一個關於如何讓綁定工作的問題,但是在清理我的示例以準備發佈後,我已經設法使其工作 - 問題是我不知道爲什麼這個工程:用Scala Guice綁定一個對象到一個對象
import org.specs2.mutable._
import com.google.inject.{ Inject, Module, Binder, Guice }
import net.codingwell.scalaguice.ScalaModule
object InjectorSpec extends Specification {
val injector = Guice.createInjector(new ScalaModule() {
def configure() {
bind[Message].toInstance(MessageImpl)
bind[MessageService.type].toInstance(MessageService) // This line makes it work?
}
})
trait Message {
val body: String
}
object MessageImpl extends Message {
val body: String = "Hello!"
}
object MessageService {
@Inject
val message: Message = null
def get = message.body
}
"MessageService" should {
"Inject Message Implementation" in {
MessageService.get mustEqual "Hello!"
}
}
}
最初我只是綁定類型被注入(注入MessageImpl消息)。一路上,我拿起了服務的第二個綁定,沒有注入(所以我不明白綁定是必需的)。任何人都可以解釋這裏發生了什麼,如果這是繼續進行的正確方法?
https://pbs.twimg.com/media/ A5HdRB-CIAAM3Ri.png:大* scnr * –
@StefanKunze確切! :) – matthewrk