In lettura Spring in Action (3a edizione) e qui un frammento da esso:
ApplicationContext ctx=new ClassPathXmlApplicationContext("springidol.xml");
Performer performer=(Performer)ctx.getBean("poeticDuke");
performer.perform();
Non ha alcun problema, tuttavia, quando l'autore introduce il metodo init e il metodo destroy:
<bean id="poeticDuke"
class="com.springinaction.springidol.PoeticJuggler"
init-method="turnOnLights"
destroy-method="turnOffLights">
In qualche modo l'output ha ottenuto solo il metodo init ma non il metodo destroy. Poi ho capito che il contesto chiama destroy-method alla sua chiusura e ho provato a codificare come segue:
ApplicationContext ctx=new ClassPathXmlApplicationContext("springidol.xml");
Performer performer=(Performer)ctx.getBean("poeticDuke");
performer.perform();
ctx.close();
Non viene compilato perché l'interfaccia ApplicationContext non ha il metodo close. Funziona solo come segue:
ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("springidol.xml");
Performer performer=(Performer)ctx.getBean("poeticDuke");
performer.perform();
ctx.close();
Perché l'autore l'ha scritto in questo modo?