Friday 28 August 2015

Singleton beans scopes in Spring

Beans with different Id’s have Singleton instance


singleton: (Default) Scopes a single bean definition to a single object instance per Spring IoC container.


NO, Similar beans with different ids make the different instance (Even scope is defined as Singleton); because the singleton scope checked on the basis of bean ids.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-4.0.xsd"

       default-autowire="byName" default-autowire-candidates="*">

       <context:annotation-config />

       <bean id="id1" class="spring.core.singleton.Singleton">
              <property name="name" value="Rajesh kumar"></property>
       </bean>

       <bean id="id2" class="spring.core.singleton.Singleton">
              <property name="name" value="Awadh kumar"></property>
       </bean>
</beans>

package spring.core.singleton;
public class Singleton {
      
       private String name;

       public String getName() {
              return name;
       }

       public void setName(String name) {
              this.name = name;
       }
}

package spring.core.singleton;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestSingletonScope {
       public static void main(String[] args) {

              ApplicationContext appContext = new ClassPathXmlApplicationContext
                           ("spring/core/singleton/autowiring-spring.xml");
             
              Singleton singleton1 = appContext.getBean("id1", Singleton.class);
             
              Singleton singleton2 = appContext.getBean("id2", Singleton.class);
             
             
              System.out.println(singleton1.getName());
              System.out.println(singleton2.getName());

              if(singleton1==singleton2) {
                     System.out.println("singleton");
              } else {
                     System.out.println("not singleton");
              }
       }
}

Output:
Rajesh kumar
Awadh kumar
not singleton

No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...