私は現在、Play2.2 アプリケーションで依存性注入に Scaldi を使用することを検討しています。
Scaldi の Web サイトでドキュメントを読みましたが、不明なのは Akka での使用方法です。
私のプロジェクトでこれまでに持っているもの:
Models/ (Daos and case classes)
User.scala
Services/ (Akka Actors)
UserService.scala
ProfileService.scala
Managers/ (Regular Manager Classes)
UserManager.scala (The Trait Interface)
UserManagerImpl.scala (An actual implementation)
UserManagerMock.scala (Mocked version)
etc..
UserService.scala では、UserManager のインスタンスを使用して作業を行います。
class UserService extends ServiceActor with Injection
{
val userManager = inject[UserManager]
def receive = {
case Register(email: String, password: String)
}
}
object UserService extends Service
{
case class Register(email: String, password: String)
override protected val actorRef = Akka.system.actorOf(Props[UserService].withRouter(SmallestMailboxRouter(resizer = Some(resizer))))
}
注入されたマネージャーによっては、アクターがすべての作業をマネージャーに委任した場合、アクターは一種の嘲笑になる可能性がありますか?
しかし、マネージャーが単なるコンパニオン オブジェクトである他のサービスを呼び出す必要がある場合はどうなるでしょうか。それとも、コンパニオン オブジェクトを介して参照される他のサービスを呼び出すサービスですか?
Akka と Scaldi を統合する方法について、何かアドバイスはありますか?