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:

<beans xmlns="" =
    <bean id="company" scope="singleton"
        <bean id="employee" scope="prototype"
            <bean id="student" scope="request"
                <bean id="customer" scope="session"
                    <bean id="item" scope="globalsession"

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.

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 🙂