Когда я вызываю getBean(name)
на BeanFactory
, я получаю обратно экземпляр компонента, определенный в контексте приложения. Однако, когда я снова вызываю getBean(name)
(с тем же именем,), я получаю тот же экземпляр компонента. Я понимаю, как это было бы желательно в некоторых (многих?) Случаях, но как мне сказать BeanFactory
, чтобы дать мне новый экземпляр?
Пример конфигурации Spring (кратко ... Я пропустил некоторые подробности, но это должно понять смысл):
<beans>
<bean id="beanA" class="misc.BeanClass"/>
</beans>
Пример Java:
for(int i = 0;i++;i<=1) {
ApplicationContext context = ClassPathXmlApplicationContext("context.xml");
Object o = context.getBean("beanA");
System.out.println(o.toString()); // Note: misc.BeanA does not implement
// toString(), so this will display the OOID
// so that we can tell if it's the same
// instance
}
Когда я запускаю это, я получаю что-то вроде:
misc.BeanClass@139894
misc.BeanClass@139894
Обратите внимание, что оба имеют одинаковый OOID ... так что это одни и те же экземпляры ... но я хотел разные экземпляры.