我可能在这里错了,但我无法弄清楚为什么Spring会从Singleton类创建2个不同的对象。以下是代码:为什么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>
预计使用“原型”的范围,但是,为什么会“原型”创建2个对象,以得到一个正常的类不同的对象来自Singleton类?
@Scotirios我有一个预感,Spring必须通过反射来加载类,因此是预期的行为。感谢您的确认。 – bluelurker 2015-01-31 18:45:01