Bean of Singleton scope

When no explicit scope is mentioned during bean definition, it is taken by default as single.

   

Step 1: Define the POJO


File : Amount.java
package com.simpleCodeStuffs;
public class Amount {
private String val;
public String getVal() {
return val;
}
public void setVal(String val) {
this.val = val;
}
}
In singleton scope, only a single bean instance is returned per Spring IoC container

Step 2 : Define the bean definition


File : Beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<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-3.0.xsd">

        <bean id="amount" class="com.simpleCodeStuffs.Amount">
                <property name="val" value="SimpleCodeStuffs" />
        </bean>
</beans>
Note, only the bean is defined. Property values are injected from the main class in order to provide some clarity on the subject. Also note, the scope has no€™t been mentioned in the bean definition. Therefore, the bean takes the default scope of singleton

Step 3


Create the Main class to receive the object from the beanId and place the call
File : MainClass.java

package com.simpleCodeStuffs;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.simpleCodeStuffs.Amount;
public class MainClass {
public static void main(String[] args) {
ApplicationContext context= new ClassPathXmlApplicationContext
 ("Beans.xml");
Amount Firstamt=(Amount)context.getBean("amount");
/* instance of bean returned*/
Firstamt.setVal("SimpleCodeStuffs");
System.out.println(Firstamt.getVal());
Amount Secondamt=(Amount)context.getBean("amount");
/*For singleton scope, new bean instance
is not returned at this point. Hence the same value is printed. */
System.out.println(Secondamt.getVal());
}
}

Note that, as the bean is of singleton scope, only one instance is returned for the beanID amount€™ per IOC container. This can be seen in the output as the same value is printed twice, once for Firstamt and once for Secondamt.