Package play.inject

Class Module

  • Direct Known Subclasses:
    AhcWSModule, BuiltInModule, DBModule, FormattersModule, FormFactoryModule, JPAModule, OpenIdModule, ValidatorsModule

    public abstract class Module
    extends play.api.inject.Module
    A Play dependency injection 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 Detail

      • Module

        public Module()
    • Method Detail

      • bindings

        public abstract List<Binding<?>> bindings​(Environment environment,
                                                  com.typesafe.config.Config config)
      • bindings

        public final scala.collection.immutable.Seq<play.api.inject.Binding<?>> bindings​(play.api.Environment environment,
                                                                                         play.api.Configuration configuration)
        Specified by:
        bindings in class play.api.inject.Module
      • bindClass

        public static <T> BindingKey<T> bindClass​(Class<T> clazz)
        Create a binding key for the given class.