Использовал приведенный ниже код для проверки работы метода refre sh () в AbstractApplicationContext. Но обнаружил, что из-за refre sh область видимости синглтона бобов теряется. Запутался, что именно происходит после вызова синглтона.
Используемый код:
public static void main(String[] args) {
@SuppressWarnings("resource")
AbstractApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj1 = (HelloWorld) context.getBean("helloWorld");
obj1.setMessage("Object 1...");
obj1.getMessage();
context.refresh();
obj1.getMessage();
HelloWorld obj2 = (HelloWorld) context.getBean("helloWorld");
obj2.getMessage();
context.refresh();
obj1.getMessage();
obj2.getMessage();
}
XML Конфигурация:
<bean id="helloWorld" class="com.vinaymitbawkar.HelloWorld"
init-method="init" destroy-method="destroy">
</bean>
Выход:
init method
Your Message : Object 1...
destroy method
init method
Your Message : Object 1...
Your Message : null
destroy method
init method
Your Message : Object 1...
Your Message : null
Почему это происходит? Почему синглтонная область видимости здесь теряется, а obj2 возвращает ноль?