-
Notifications
You must be signed in to change notification settings - Fork 1.7k
UntargettedBindings
Googler edited this page Mar 9, 2020
·
9 revisions
Creating bindings that don't have targets
You may create bindings without specifying a target. This is most useful for
concrete classes and types annotated by either @ImplementedBy
or
@ProvidedBy
. An untargetted binding informs the injector about a type, so it
may prepare dependencies eagerly. Untargetted bindings have no to clause, like
so:
bind(MyConcreteClass.class);
bind(AnotherConcreteClass.class).in(Singleton.class);
When specifying binding annotations, you must still add the target binding, even it is the same concrete class. For example:
bind(MyConcreteClass.class)
.annotatedWith(Names.named("foo"))
.to(MyConcreteClass.class);
bind(AnotherConcreteClass.class)
.annotatedWith(Names.named("foo"))
.to(AnotherConcreteClass.class)
.in(Singleton.class);
Untargeted bindings are often used to register a type in a Module
to ensure
that Guice is aware of the type. Registering those types is required to make
them eligible for injection when JIT is disabled.
-
User's Guide
-
Integration
-
Extensions
-
Internals
-
Releases
-
Community