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