Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring Bean Scopes

Can someone explain what the scopes are in Spring beans I've always just used 'prototype' but are there other parameters I can put in place of that?

Example of what I'm talking about

<bean id="customerInfoController" class="com.action.Controller" scope="prototype">     <property name="accountDao" ref="accountDao"/>     <property name="utilityDao" ref="utilityDao"/>     <property name="account_usageDao" ref="account_usageDao"/>   </bean> 
like image 725
gcalex5 Avatar asked Jul 11 '13 16:07

gcalex5


People also ask

What is Spring bean scopes?

Bean Scopes refers to the lifecycle of Bean that means when the object of Bean will be instantiated, how long does that object live, and how many objects will be created for that bean throughout. Basically, it controls the instance creation of the bean and it is managed by the spring container. Bean Scopes in Spring.

What is the default scope of Spring bean?

Spring's default scope is singleton. It's just that your idea of what it means to be a singleton doesn't match how Spring defines singletons. If you tell Spring to make two separate beans with different ids and the same class, then you get two separate beans, each with singleton scope.


2 Answers

From the spring specs, there are five types of bean scopes supported :

1. singleton(default*)

Scopes a single bean definition to a single object instance per Spring IoC container.

2. prototype

Scopes a single bean definition to any number of object instances.

3. request

Scopes a single bean definition to the lifecycle of a single HTTP request; that is each and every HTTP request will have its own instance of a bean created off the back of a single bean definition. Only valid in the context of a web-aware Spring ApplicationContext.

4. session

Scopes a single bean definition to the lifecycle of a HTTP Session. Only valid in the context of a web-aware Spring ApplicationContext.

5. global session

Scopes a single bean definition to the lifecycle of a global HTTP Session. Typically only valid when used in a portlet context. Only valid in the context of a web-aware Spring ApplicationContext.

*default means when no scope is explicitly provided in the <bean /> tag. read more about them here: http://static.springsource.org/spring/docs/3.0.0.M3/reference/html/ch04s04.html

like image 167
Juned Ahsan Avatar answered Oct 16 '22 13:10

Juned Ahsan


In Spring, bean scope is used to decide which type of bean instance should be returned from Spring container back to the caller.

5 types of bean scopes are supported :

  1. Singleton : It returns a single bean instance per Spring IoC container.This single instance is stored in a cache of such singleton beans, and all subsequent requests and references for that named bean return the cached object.If no bean scope is specified in bean configuration file, default to singleton. enter image description here

  2. Prototype : It returns a new bean instance each time when requested. It does not store any cache version like singleton. enter image description here

  3. Request : It returns a single bean instance per HTTP request.

    enter image description here

  4. Session : It returns a single bean instance per HTTP session (User level session).

  5. GlobalSession : It returns a single bean instance per global HTTP session. It is only valid in the context of a web-aware Spring ApplicationContext (Application level session).

In most cases, you may only deal with the Spring’s core scope – singleton and prototype, and the default scope is singleton.

like image 33
Divyesh Kanzariya Avatar answered Oct 16 '22 13:10

Divyesh Kanzariya