In this tutorial, we will see the different types of Spring Bean Scopes.
Spring Bean Scopes Example:
In Spring there is a possibility to define a scope of a bean, based on your requirement you can make use of it. We can define the scope of a bean as part of the configuration details, if your application is based on XML configuration, then you can define the scope using scope
attribute in <bean>
tag or if you are using annotation-based configuration then you can use @scope
annotation.
Basically Spring we have 5 different types of bean scopes, which are described below.
Types of Spring Bean Scopes :
1) singleton: It returns a single bean instance per Spring IoC container.
2) prototype: It returns a new bean instance each time when requested to create a bean.
3) request: It returns a single instance for every HTTP request.
4) session: It returns a single instance for the entire HTTP session.
5) global session: global session scope is equal to session scope on portlet-based web applications.
Spring Bean Scopes using XML:
<beans xmlns="http://www.springframework.org/schema/beans" =
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="company" scope="singleton"
class="com.onlinetutorialspoint.springcoreapplication.Company">
<bean id="employee" scope="prototype"
class="com.onlinetutorialspoint.springcoreapplication.Employee">
<bean id="student" scope="request"
class="com.onlinetutorialspoint.springcoreapplication.Student">
<bean id="customer" scope="session"
class="com.onlinetutorialspoint.springcoreapplication.Customer">
<bean id="item" scope="globalsession"
class="com.onlinetutorialspoint.springcoreapplication.Item">
</bean>
</bean>
</bean>
</bean>
</bean>
</beans>
On the above configuration, we can see all types of spring bean scopes and declarations.
Note: If we don’t mention any scope explicitly, the default scope for a bean is a singleton. It is a commonly asked spring interview question.
Spring Bean Scope using annotation :
We can define a bean scope in spring using @scope
annotation.
@Component
@Scope("prototype")
public class Customer {
private int id;
public Customer() {
System.out.println(" id is:" + id);
}
public String getId() {
return id;
}
}
We can define all types of bean scopes by passing the parameter to @scope
annotation.
Happy Learning 🙂