Transforms a com.twitter.app.Flags collection into a map look up
An injector used within Finatra.
A support class for Module implementations which exposes a DSL for binding via type parameters.
A support class for Module
implementations which exposes a DSL for binding via type parameters. Extend this class,
override the configure
method and call the bind
methods, or define custom @Provides
annotated methods. This class also provides an integration with com.twitter.app.Flag types
which allows for passing external configuration to aid in the creation of bound types. Lastly, it
is also possible to define a list of other TwitterModule instances which this TwitterModule
"depends" on by setting the TwitterBaseModule.modules (or TwitterBaseModule.javaModules)
to a non-empty list. This will ensure that when only this TwitterModule instance is used to
compose an Injector the "dependent" list of modules will also be installed.
A TwitterModule has a lifecycle. Executing this lifecycle is particularly important if the TwitterModule creates any com.twitter.app.Flag instances.
object MyModule extends TwitterModule { flag[String](name = "card.gateway", help = "The processing gateway to use for credit cards.") override protected def configure(): Unit = { bind[Service].to[ServiceImpl].in[Singleton] bind[CreditCardPaymentService] bind[Bar[Foo]].to[FooBarImpl] bind[PaymentService].to[CreditCardPaymentService] } @Singleton @Provides def provideCreditCardServiceProcessor( @Flag("card.gateway") gateway: String ): CreditCardProcessor = { new CreditCardProcessor(gateway) } }
Attempting to bind the same type multiple times with no discriminating com.google.inject.BindingAnnotation will result in an exception during injector construction.
A module whose configuration information is hidden from its environment by default.
A module whose configuration information is hidden from its environment by default. Only bindings that are explicitly exposed will be available to other modules and to the users of the injector. This module may expose the bindings it creates and the bindings of the modules it installs.
Calling com.google.inject.PrivateModule#install in the configure() method is not supported. Please set TwitterBaseModule.modules (or TwitterBaseModule.javaModules) to a non-empty list instead.
An injector used within Finatra.
This is abstract class to allow for two implementations:
- production injector, created via
Injector.apply
and - test injector, created viaTestInjector.apply
DO NOT EXTEND this class on your own.