Spring: metody init a destroy

Spring za nás vytváří instance tříd a dává nám je k dispozici na požádání. Tím požádáním může být například volání metody getBean(). To, jak se má instance vytvořit, si Spring přečte v konfiguračním souboru. Spring tedy potřebuje konfigurační soubor (beans.xml) k tomu, aby věděl, jaké a jak má instance (beany) vytvářet. Spring nejen instance (beany) vytváří ale řídí celý jejich životní cyklus od vytvoření až po zničení. Spring umožňuje nadefinovat metody, které se mají zavolat při inicializaci instance nebo při jejím ukončení. Jak bylo uvedeno výše, Spring vytváří instance na základě konfigurace. To zda a jaké metody se v určitých fázích životního cyklu instance mají zavolat, je tedy třeba uvést v konfiguraci dané beany.

Struktura projektu

│   pom.xml
│
└───src
    ├───main
    │   └───java
    │       └───cz
    │           └───vitfo
    │               └───spring
    │                       Main.java
    │                       MyClass.java
    │
    └───resources
            beans.xml

MyClass.java

public class MyClass {
	
	private String message;

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
	
	public void myInit() {
		System.out.println("Zavolána metoda init().");
	}
	
	public void myDestroy() {
		System.out.println("Zavolána metoda destroy().");
	}
}

beans.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

   <bean 	class="cz.vitfo.spring.MyClass" 
   			init-method="myInit" 
   			destroy-method="myDestroy">
   			<property name="message" value="Hello"></property>
   </bean>

</beans>

Main.java

import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
    public static void main(String[] args) {
    	ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
    	
    	MyClass mc = context.getBean(MyClass.class);
    	
    	System.out.println(mc.getMessage());
    	
    	// Context funguje jako úložiště všech Springem vytvořených bean (instancí).
    	((ConfigurableApplicationContext) context).close();
    }
}

Výsledek

Zavolána metoda init().
Hello
Zavolána metoda destroy().

Popis
V konfigurační souboru jsme pro beanu MyClass definovali metody, které se mají zavolat při inicializaci (init-method=“myInit“) a před zničením (destroy-method=“myDestroy“). Tyto metody jsou ve třídě MyClass a pouze při svém zavolání vypíší text, jak je vidět v konzoli.

Napsat komentář