稍微改了下代码, 这种情况下, 似乎只有使用 Provide 了
trait Db class MemoryDb extends Db @Singleton class DatabaseActor @Inject() (@Name("MemoryDb") db: Db) extend Actor { // ...... } // 这里还是使用的 bind 来绑定注入 class DbClient @Inject() (@Name("DbActor") actorRef: ActorRef) // ActorSystem 可以由启动类中来实例化 class MyModule(system: ActorSystem) extends AbstractModule with ScalaModule { bind[Db].annotatedWith(Names.named("MemoryDb")).to[MemoryDb] @Provides @Named("DbActor") // 这里的参数 Db 只有靠 Provide 的绑定传递了. def dbActorRef(db: Db): ActorRef = { system.actorOf(Props.create(classOf[DbActor], db)) } }