There are several ways to do it. Typically when you want to override bindings you can disable the Play-provided module and create your own module with the same bindings, so your configuration would look like:
play.modules.enabled += "com.example.FooModule"
play.modules.disabled += "play.FooModule"
class CustomApplicationLoader extends GuiceApplicationLoader() {
override def overrides(context: Context) = super.overrides(context) ++ Seq(
bind[ActorSystem].toProvider[CustomActorSystemProvider]
)
}
The Seq of bindings is a Seq[GuiceableModule] so you can pass Guice modules instead of Play bindings too.
Greg