object MonixSupportModule extends MonixSupportModule
- Alphabetic
- By Inheritance
- MonixSupportModule
- MonixSupportModule
- MonixPlatformDependentSupportModule
- ModuleDef
- ModuleDefDSL
- TagsDSL
- IncludesDSL
- AbstractBindingDefDSL
- Module
- ModuleBase
- ModuleBaseInstances
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def _initialIncludes: ArrayBuffer[Include]
- Attributes
- protected[this]
- Definition Classes
- IncludesDSL
- def _initialState: ArrayBuffer[BindingRef]
- Attributes
- protected[this]
- Definition Classes
- AbstractBindingDefDSL
- def _initialTaggedIncludes: ArrayBuffer[IncludeApplyTags]
- Attributes
- protected[this]
- Definition Classes
- IncludesDSL
- def _initialTags: Set[BindingTag]
- Attributes
- protected[this]
- Definition Classes
- TagsDSL
- final def _make[T](provider: Functoid[T])(implicit arg0: Tag[T], pos: CodePositionMaterializer): MakeDSL[T]
- Attributes
- protected[this]
- Definition Classes
- AbstractBindingDefDSL
- def _registered[T <: BindingRef](bindingRef: T): T
- Attributes
- protected[this]
- Definition Classes
- AbstractBindingDefDSL
- final def addImplicit[T](implicit arg0: Tag[T], instance: T, pos: CodePositionMaterializer): MakeDSLUnnamedAfterFrom[T]
Same as
make[T].from(implicitly[T])
*Same as
make[T].from(implicitly[T])
*- Attributes
- protected[this]
- Definition Classes
- AbstractBindingDefDSL
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- final def bindings: Set[Binding]
- Definition Classes
- ModuleDefDSL
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def equals(obj: Any): Boolean
- Definition Classes
- ModuleBase → AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def hashCode(): Int
- Definition Classes
- ModuleBase → AnyRef → Any
- final def include(that: ModuleBase): Unit
Add all bindings in
that
module intothis
moduleAdd all bindings in
that
module intothis
moduleWON'T add global tags from TagsDSL#tag to included bindings.
- Attributes
- protected[this]
- Definition Classes
- IncludesDSL
- final def includeApplyTags(that: ModuleBase): Unit
Add all bindings in
that
module intothis
moduleAdd all bindings in
that
module intothis
moduleWILL add global tags from TagsDSL#tag to included bindings.
- Attributes
- protected[this]
- Definition Classes
- IncludesDSL
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def iterator: Iterator[Binding]
- Definition Classes
- ModuleDefDSL
- final def keys: Set[DIKey]
- Definition Classes
- ModuleBase
- final def keysIterator: Iterator[DIKey]
- Definition Classes
- ModuleDefDSL
- final macro def make[T]: MakeDSL[T]
- Attributes
- protected[this]
- Definition Classes
- AbstractBindingDefDSL
- final def many[T](implicit tag: Tag[Set[T]], pos: CodePositionMaterializer): SetDSL[T]
Set bindings are useful for implementing event listeners, plugins, hooks, http routes, etc.
Set bindings are useful for implementing event listeners, plugins, hooks, http routes, etc.
To define a multibinding use
.many
and.add
methods in ModuleDef DSL:import cats.effect._, org.http4s._, org.http4s.dsl.io._, scala.concurrent.ExecutionContext.Implicits.global import distage._ object HomeRouteModule extends ModuleDef { many[HttpRoutes[IO]].add { HttpRoutes.of[IO] { case GET -> Root / "home" => Ok(s"Home page!") } } }
Set bindings defined in different modules will be merged together into a single Set. You can summon a created Set by type
Set[T]
:import cats.implicits._, org.http4s.server.blaze._, org.http4s.implicits._ object BlogRouteModule extends ModuleDef { many[HttpRoutes[IO]].add { HttpRoutes.of[IO] { case GET -> Root / "blog" / post => Ok("Blog post ``$post''!") } } } class HttpServer(routes: Set[HttpRoutes[IO]]) { val router = routes.foldK def serve = BlazeBuilder[IO] .bindHttp(8080, "localhost") .mountService(router, "/") .start } val objects = Injector().produce(HomeRouteModule ++ BlogRouteModule) val server = objects.get[HttpServer] val testRouter = server.router.orNotFound testRouter.run(Request[IO](uri = uri("/home"))).flatMap(_.as[String]).unsafeRunSync // Home page! testRouter.run(Request[IO](uri = uri("/blog/1"))).flatMap(_.as[String]).unsafeRunSync // Blog post ``1''!
- Attributes
- protected[this]
- Definition Classes
- AbstractBindingDefDSL
- See also
Guice wiki on Multibindings: https://github.com/google/guice/wiki/Multibindings
- final def modify[T]: ModifyDSL[T, MakeDSL, MakeDSLUnnamedAfterFrom, SetDSL]
Modify a value bound at
T
.Modify a value bound at
T
. Modifiers stack and are all applied beforeT
is added to the object graph; only the final instance is observable.import distage.{Injector, ModuleDef} Injector().produceGet[Int](new ModuleDef { make[Int].from(1) modify[Int](_ + 1) modify[Int](_ + 1) }).use(i => println(s"Got `Int` $i")) // Got `Int` 3
You can also modify while summoning additional dependencies:
modify[Int]("named").by(_.flatAp { (adder: Adder, multiplier: Multiplier) => int: Int => multiplier.multiply(adder.add(int, 1), 10) })
- Attributes
- protected[this]
- Definition Classes
- AbstractBindingDefDSL
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- final def tag(tags: BindingTag*): Unit
Add
tags
to all bindings in this module, except for included bindingsAdd
tags
to all bindings in this module, except for included bindings- Attributes
- protected[this]
- Definition Classes
- TagsDSL
- final def toString(): String
- Definition Classes
- ModuleBase → AnyRef → Any
- final def todo[T](implicit arg0: Tag[T], pos: CodePositionMaterializer): MakeDSLUnnamedAfterFrom[T]
Create a dummy binding that throws an exception with an error message when it's created.
Create a dummy binding that throws an exception with an error message when it's created.
Useful for prototyping.
- Attributes
- protected[this]
- Definition Classes
- AbstractBindingDefDSL
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated