【发布时间】:2015-01-31 18:39:03
【问题描述】:
我在这里可能错了,但我无法弄清楚为什么 Spring 从 Singleton 类创建 2 个不同的对象。以下是代码:
public class DbSingleTOn {
private static DbSingleTOn dbSingleTOn = new DbSingleTOn();
private DbSingleTOn() {
}
public static DbSingleTOn getInstance() {
return dbSingleTOn;
}
}
public class MyApp {
public static void main(String[] args) {
AbstractApplicationContext context = new ClassPathXmlApplicationContext(
"spring-singleton.xml");
DbSingleTOn dbSingleTOn = context.getBean(DbSingleTOn.class);
System.out.println(dbSingleTOn.hashCode());
DbSingleTOn dbSingleTOn1 = context.getBean(DbSingleTOn.class);
System.out.println(dbSingleTOn1.hashCode());
context.registerShutdownHook();
}
}
Output:
18885489
17045421
Spring 配置 XML:
<bean id="bean1" class="com.singleton.DbSingleTOn" scope="prototype" >
</bean>
预期使用“原型”作用域为普通类获取不同的对象,但是,为什么“原型”会从 Singleton 类创建 2 个对象?
【问题讨论】: