Managed beans as the name speaks, acts as the model for the JSF UI. Their life cycle is governed as per JSF specification.
Though the life time is governed by the scope in which a given managed bean is added.
Scope | Annotation | Description |
none | @NoneScoped | A bean in none scope will not be instantiated unless another managed bean calls for it. They are created on demand, and are not stored in any other scope. Instance created will remain untill the caller managed bean exists. |
request | @RequestScoped | A bean in request scope will be instantiated per HTTP request, there life time is untill response is sent back. |
view | @ViewedScope | A bean in view scope will be available till the time user is on the same view, navigating to other view will result in deallocation of the managed bean. |
session | @SessionScoped | A bean will be available till the session is invalidated. This scope is good if you want to manage data which is required for the complete session of the user. |
applcation | @ApplicationScoped | A bean marked with this scope will be available to all the users, untill application is available. |
custom | @CustomScoped | If the content of <managed-bean-scope> or value attribute of @CustomScoped evaluates to class which implements java.util.Map then the JSF runtime will use the map as the scope for the managed bean. |