public abstract class Module
extends play.api.inject.Module
Dependency injection modules can be used by Play plugins to provide bindings for JSR-330 compliant ApplicationLoaders. Any plugin that wants to provide components that a Play application can use may implement one of these.
Providing custom modules can be done by appending their fully qualified class names to `play.modules.enabled` in `application.conf`, for example
play.modules.enabled += "com.example.FooModule"
play.modules.enabled += "com.example.BarModule"
It is strongly advised that in addition to providing a module for JSR-330 DI, that plugins also
provide a Scala trait that constructs the modules manually. This allows for use of the module
without needing a runtime dependency injection provider.
The `bind` methods are provided only as a DSL for specifying bindings. For example:
@Override
public List<Binding<?>> bindings(Environment environment, Config config) {
return Arrays.asList(
bindClass(Foo.class).to(FooImpl.class),
bindClass(Bar.class).to(() -> new Bar()),
bindClass(Foo.class).qualifiedWith(SomeQualifier.class).to(OtherFoo.class)
);
}
Constructor and Description |
---|
Module() |
Modifier and Type | Method and Description |
---|---|
static <T> BindingKey<T> |
bindClass(Class<T> clazz)
Create a binding key for the given class.
|
abstract List<Binding<?>> |
bindings(Environment environment,
com.typesafe.config.Config config) |
scala.collection.immutable.Seq<play.api.inject.Binding<?>> |
bindings(play.api.Environment environment,
play.api.Configuration configuration) |
public abstract List<Binding<?>> bindings(Environment environment, com.typesafe.config.Config config)
public final scala.collection.immutable.Seq<play.api.inject.Binding<?>> bindings(play.api.Environment environment, play.api.Configuration configuration)
bindings
in class play.api.inject.Module
public static <T> BindingKey<T> bindClass(Class<T> clazz)