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);