Immutable airframe design.
Immutable airframe design.
Design instance does not hold any duplicate bindings for the same Surface.
Design configs
This class is used to obtain the class names of the call-by-name functions (Function0[R]).
This class is used to obtain the class names of the call-by-name functions (Function0[R]).
This wrapper do not directly access the field f (Function0[R]) in order to avoid the evaluation of the function.
LifeCycleManager manages the life cycle of objects within a Session
bind[A].withLifeCycle(init = ..., start = ..., shutdown = ...)
Session manages injected objects (e.g., Singleton)
Trait for embedding Session to a user trait
First In, Last Out (FILO) hook executor.
First In, Last Out (FILO) hook executor.
If objects are injected in A -> B -> C order, init an shutdown orders will be: init => A -> B -> C shutdown order => C -> B -> A
Support @PreDestroy and @PostConstruct
Inject a singleton of A
The entry point to create a new design beginning from a blanc design
import wvlet.airframe._
val d = design.bind[X]
The entry point to create a new design beginning from a blanc design
import wvlet.airframe._
val d = design.bind[X]
Create an empty design, which sends life cycle logs to debug log level