Guice Integration

Guice Integration

Module stability: STABLE

All Typed Actors support dependency injection using Guice annotations (such as ‘@Inject’ etc.). The ‘TypedActorManager’ class understands Guice and will do the wiring for you.

External Guice modules

You can also plug in external Guice modules and have not-actors wired up as part of the configuration. Here is an example:

import static akka.config.Supervision.*;
import static akka.config.SupervisorConfig.*;

TypedActorConfigurator manager = new TypedActorConfigurator();

manager.configure(
  new AllForOneStrategy(new Class[]{Exception.class}, 3, 1000),
    new SuperviseTypedActor[] {
      new SuperviseTypedActor(
        Foo.class,
        FooImpl.class,
        temporary(),
        1000),
      new SuperviseTypedActor(
        Bar.class,
        BarImpl.class,
        permanent(),
        1000)
  })
.addExternalGuiceModule(new AbstractModule() {
  protected void configure() {
    bind(Ext.class).to(ExtImpl.class).in(Scopes.SINGLETON);
  }})
.configure()
.inject()
.supervise();

Retrieve the external Guice dependency

The external dependency can be retrieved like this:

Ext ext = manager.getExternalDependency(Ext.class);

Contents