LifeCycleManager manages the life cycle of objects within a Session
If an injected class implements close() (in AutoCloseable interface), add a shutdown hook to call close() if there is no other shutdown hooks
First In, Last Out (FILO) hook executor.
Support @PreDestroy and @PostConstruct
First In, Last Out (FILO) hook executor.
If objects are injected in A -> B -> C order, the init and shutdown orders will be as follows: init hook call order: A -> B -> C shutdown hook call order: C -> B -> A