Возможно, я ошибаюсь, но я не могу понять, почему Spring создает 2 разных объекта из класса Singleton. Ниже приводится код:Почему Spring создаст 2 объекта из класса Singleton?
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 Config XML:
<bean id="bean1" class="com.singleton.DbSingleTOn" scope="prototype" >
</bean>
Ожидается, чтобы получить другой объект для нормального класса с использованием «прототип» область применения, однако, почему бы «прототип» создать 2 объекта из класса Singleton?
@Scotirios У меня была догадка, что весна должна загружать классы через отражение, следовательно, ожидаемое поведение. Спасибо, что подтвердили. – bluelurker