İlkbahar - Fasulye Yaşam Döngüsü

Bir Bahar fasulyesinin yaşam döngüsünün anlaşılması kolaydır. Bir fasulye somutlaştırıldığında, onu kullanılabilir bir duruma getirmek için bazı başlatma işlemlerinin gerçekleştirilmesi gerekebilir. Benzer şekilde, çekirdek artık gerekli olmadığında ve kaptan çıkarıldığında, bir miktar temizlik gerekebilir.

Fasulye Örnekleme zamanı ile imhası arasında sahnenin arkasında gerçekleşen faaliyetlerin listeleri olsa da, bu bölümde fasulyenin başlatılması ve yok edilmesi sırasında gerekli olan yalnızca iki önemli fasulye yaşam döngüsü geri çağırma yöntemi tartışılacaktır.

Bir fasulyenin kurulumunu ve sökülmesini tanımlamak için, basitçe <bean> initmethod ve / veya destroy-methodparametreleri. İnit-method özniteliği, somutlaştırmanın hemen ardından bean üzerinde çağrılacak bir yöntemi belirtir. Benzer şekilde, destroymethod, bir fasulye konteynerden çıkarılmadan hemen önce çağrılan bir yöntemi belirtir.

Başlatma geri aramaları

Org.springframework.beans.factory.InitializingBean arayüzü tek bir yöntemi belirtir -

void afterPropertiesSet() throws Exception;

Böylece, yukarıdaki arayüzü basitçe uygulayabilirsiniz ve ilklendirme çalışması afterPropertiesSet () yöntemi içinde aşağıdaki gibi yapılabilir -

public class ExampleBean implements InitializingBean {
   public void afterPropertiesSet() {
      // do some initialization work
   }
}

XML tabanlı konfigürasyon meta verileri durumunda, init-methodvoid no-argument imzası olan yöntemin adını belirtmek için öznitelik. Örneğin -

<bean id = "exampleBean" class = "examples.ExampleBean" init-method = "init"/>

Sınıf tanımı aşağıdadır -

public class ExampleBean {
   public void init() {
      // do some initialization work
   }
}

İmha geri aramaları

Org.springframework.beans.factory.DisposableBean arayüz tek bir yöntemi kapsar -

void destroy() throws Exception;

Böylece, yukarıdaki arayüzü basitçe uygulayabilir ve sonlandırma çalışması destroy () metodu içinde aşağıdaki gibi yapılabilir -

public class ExampleBean implements DisposableBean {
   public void destroy() {
      // do some destruction work
   }
}

XML tabanlı konfigürasyon meta verileri durumunda, destroy-methodvoid no-argument imzası olan yöntemin adını belirtmek için öznitelik. Örneğin -

<bean id = "exampleBean" class = "examples.ExampleBean" destroy-method = "destroy"/>

Sınıf tanımı aşağıdadır -

public class ExampleBean {
   public void destroy() {
      // do some destruction work
   }
}

Spring'in IoC konteynerini web dışı bir uygulama ortamında kullanıyorsanız; örneğin, zengin bir istemci masaüstü ortamında, JVM ile bir kapatma kancası kaydedersiniz. Bunu yapmak, zarif bir kapatma sağlar ve tekli çekirdeklerinizdeki ilgili yok etme yöntemlerini çağırır, böylece tüm kaynaklar serbest bırakılır.

InitializingBean veya DisposableBean geri aramalarını kullanmamanız önerilir, çünkü XML yapılandırması yönteminizi adlandırma açısından büyük esneklik sağlar.

Misal

Çalışan bir Eclipse IDE'ye sahip olalım ve bir Spring uygulaması oluşturmak için aşağıdaki adımları atalım -

Adımlar Açıklama
1 SpringExample adıyla bir proje oluşturun ve altında bir com.tutorialspoint paketi oluşturun .src oluşturulan projedeki klasör.
2 Bahar Merhaba Dünya Örneği bölümünde açıklandığı gibi Harici JAR Ekle seçeneğini kullanarak gerekli Bahar kitaplıklarını ekleyin .
3 Com.tutorialspoint paketi altında HelloWorld ve MainApp Java sınıfları oluşturun .
4 Beans yapılandırma dosyasını Beans.xml altında oluşturun.src Klasör.
5 Son adım, tüm Java dosyalarının ve Bean Yapılandırma dosyasının içeriğini oluşturmak ve aşağıda açıklandığı gibi uygulamayı çalıştırmaktır.

İşte içeriği HelloWorld.java dosya -

package com.tutorialspoint;

public class HelloWorld {
   private String message;

   public void setMessage(String message){
      this.message = message;
   }
   public void getMessage(){
      System.out.println("Your Message : " + message);
   }
   public void init(){
      System.out.println("Bean is going through init.");
   }
   public void destroy() {
      System.out.println("Bean will destroy now.");
   }
}

Aşağıdakilerin içeriği MainApp.javadosya. Burada bir kapatma kancası kaydetmeniz gerekiyorregisterShutdownHook()AbstractApplicationContext sınıfında bildirilen yöntem. Bu, sorunsuz bir kapatma sağlar ve ilgili yok etme yöntemlerini çağırır.

package com.tutorialspoint;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {
   public static void main(String[] args) {
      AbstractApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");

      HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
      obj.getMessage();
      context.registerShutdownHook();
   }
}

Yapılandırma dosyası aşağıdadır Beans.xml başlatma ve yok etme yöntemleri için gereklidir -

<?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 id = "helloWorld" class = "com.tutorialspoint.HelloWorld" init-method = "init" 
      destroy-method = "destroy">
      <property name = "message" value = "Hello World!"/>
   </bean>

</beans>

Kaynak ve bean yapılandırma dosyalarını oluşturmayı tamamladığınızda uygulamayı çalıştırmamıza izin verin. Uygulamanızda her şey yolundaysa, aşağıdaki mesajı yazdıracaktır -

Bean is going through init.
Your Message : Hello World!
Bean will destroy now.

Varsayılan başlatma ve yok etme yöntemleri

Aynı ada sahip başlatma ve / veya yok etme yöntemlerine sahip çok fazla fasulyeniz varsa, init-method ve destroy-methodher bir fasulyede. Bunun yerine çerçeve, bu tür bir durumu aşağıdakileri kullanarak yapılandırma esnekliği sağlar:default-init-method ve default-destroy-method <beans> öğesindeki öznitelikler aşağıdaki gibidir -

<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"
   default-init-method = "init" 
   default-destroy-method = "destroy">

   <bean id = "..." class = "...">
      <!-- collaborators and configuration for this bean go here -->
   </bean>
   
</beans>