Immutable airframe design.
Immutable airframe design.
Design instance does not hold any duplicate bindings for the same Surface.
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
If importing wvlet.airframe._ is not preferable, Airframe.newDesign can be used.
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