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>
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.
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.
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
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 :
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.
Prototype : It returns a new bean instance each time when requested. It does not store any cache version like singleton.
Request : It returns a single bean instance per HTTP request.
Session : It returns a single bean instance per HTTP session (User level session).
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With