Stateful beans and Stateless beans in Spring context

Spring

Spring Problem Overview


I am reading spring through its official documentation and at one place I came to a line that uses prototype scope for all stateful beans while singleton for stateless beans.

I know there is something as stateful as well as stateless beans in EJB but this is not what they have mentioned in the documents.

Can anyone explain to me what exactly this means of stateful as well stateless beans in Spring

Thanks in advance

Spring Solutions


Solution 1 - Spring

From spring perspective

  • stateless beans: beans that are singleton and are initialized only once. The only state they have is a shared state. These beans are created while the ApplicationContext is being initialized. The SAME bean instance will be returned/injected during the lifetime of this ApplicationContext.

  • stateful beans: beans that can carry state (instance variables). These are created EVERY time an object is required (like using the "new" operator in java).

These are not EJB statfull/stateless session beans.

Solution 2 - Spring

It totally depends on the implementation. See tomee for example http://tomee.apache.org/statelesscontainer-config.html . You'll have to check in your server docs

Solution 3 - Spring

There is no point in storing specific information like client data, per request data in Singleton bean as they are created only once by Spring IOC container. That's why singleton beans are stateless. They are shared resources. They can only be used for storing global information.

When a request is made for creating a prototype bean, a new request is created every time. So, they can be used to store some specific information for each request. So they are stateful.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionUmesh AwasthiView Question on Stackoverflow
Solution 1 - SpringAravind YarramView Answer on Stackoverflow
Solution 2 - SpringcocorosselloView Answer on Stackoverflow
Solution 3 - SpringS KumarView Answer on Stackoverflow