In this tutorials, we will see the different types of Spring Bean Scopes.
Spring Bean Scopes :
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 for 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 entire HTTP session.
5) global session: global session scope is equal to session scope on portlet-based web applications.
Spring Bean Scopes using XML:
[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>
[/xml]
On the above configuration, we can see all types 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.
[java]
@Component
@Scope("prototype")
public class Customer {
private int id;
public Customer() {
System.out.println(" id is:" + id);
}
public String getId() {
return id;
}
}
[/java]
We can define all types of bean scopes by passing the parameter to @scope annotation.
Happy Learning 🙂
Leave A Comment