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 🙂