In Spring, each bean has one scope in the container. You can control not only the bean metadata and its life, but also the scope of that bean. You can create a custom scope of the bean, and register it with the container. You can decide the scope of the bean by configuring it with the bean definition with the XML-, Annotations-, or Java-based configuration.
The Spring application context creates all beans by using a singleton scope. That means, it is always the same bean each time; it doesn't matter how many times it is injected into another bean or called by other services. Because of this singleton behavior, the scope reduces the cost of instantiating. It is suitable for stateless objects in the application.
In a Spring application, sometimes it is required to save the state of some objects that aren't safe for reuse. For such a requirement...