Start here. This is the direct spoken answer to practice first.
Overview
The container creates, populates, processes, initializes, exposes, and eventually destroys supported managed instances.
Spring instantiates a bean, injects its dependencies, applies aware callbacks and bean post-processors, runs initialization callbacks, and then exposes the finished bean for use. A post-processor may return a proxy rather than the original instance. For application initialization, @PostConstruct or an explicit init method is usually clearer than implementing a Spring lifecycle interface. On context shutdown, singleton destruction callbacks such as @PreDestroy can release owned resources.