स्प्रिंग - बीन पोस्ट प्रोसेसर

BeanPostProcessor इंटरफ़ेस कॉलबैक विधियों को परिभाषित करता है जिसे आप अपने स्वयं के तात्कालिकता तर्क, निर्भरता-संकल्प तर्क, आदि प्रदान करने के लिए लागू कर सकते हैं। आप स्प्रिंग कंटेनर के तुरंत खत्म होने, कॉन्फ़िगर करने और एक या अधिक बीनपोस्टप्रोसेसर कार्यान्वयनों में प्लग करके एक सेम को शुरू करने के बाद कुछ कस्टम तर्क भी लागू कर सकते हैं। ।

आप कई बीनपोस्टप्रोसेसर इंटरफेस कॉन्फ़िगर कर सकते हैं और आप उस क्रम को नियंत्रित कर सकते हैं जिसमें ये बीनपोस्टप्रोसेसर इंटरफेस सेट करने के लिए निष्पादित होते हैं order संपत्ति बीनपोस्टप्रोसेसर प्रदान करता है Ordered इंटरफेस।

बीनपोस्टप्रोसेसर बीन (या ऑब्जेक्ट) इंस्टेंस पर काम करते हैं, जिसका अर्थ है कि स्प्रिंग आईओसी कंटेनर बीन इंस्टेंट को इंस्टेंट करता है और फिर बीनपोस्टप्रोसेसर इंटरफेस अपना काम करते हैं।

एक ApplicationContext स्वचालित रूप से किसी भी सेम का पता लगाता है जिसे के कार्यान्वयन के साथ परिभाषित किया गया है BeanPostProcessor इंटरफ़ेस और इन सेम को पोस्टप्रोसेसर के रूप में पंजीकृत करता है, फिर सेम निर्माण पर कंटेनर द्वारा उचित रूप से कहा जाता है।

उदाहरण

निम्नलिखित उदाहरण दिखाते हैं कि कैसे एक आवेदन पत्र के संदर्भ में बीनपोस्टप्रोसेसर को लिखना, पंजीकरण करना और उसका उपयोग करना है।

आइए हम एक काम कर रहे ग्रहण आईडीई को जगह दें और स्प्रिंग एप्लिकेशन बनाने के लिए निम्नलिखित कदम उठाएं -

कदम विवरण
1 SpringExample नाम से एक प्रोजेक्ट बनाएँ और के तहत एक पैकेज com.tutorialspoint बनाएँsrc बनाया परियोजना में फ़ोल्डर।
2 स्प्रिंग हैलो वर्ल्ड उदाहरण अध्याय में बताए अनुसार बाहरी जार विकल्प का उपयोग करके आवश्यक स्प्रिंग लाइब्रेरी जोड़ें
3 Com.tutorialspoint पैकेज के तहत Java कक्षाएं HelloWorld , InitHelloWorld और MainApp बनाएं
4 के तहत बीन्स कॉन्फ़िगरेशन फ़ाइल Beans.xml बनाएँsrc फ़ोल्डर।
5 अंतिम चरण सभी जावा फ़ाइलों और बीन कॉन्फ़िगरेशन फ़ाइल की सामग्री बनाना और नीचे बताए अनुसार एप्लिकेशन चलाना है।

यहाँ की सामग्री है HelloWorld.java फ़ाइल -

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.");
   }
}

बीनपोस्टप्रोसेसर को लागू करने का यह एक बहुत ही बुनियादी उदाहरण है, जो किसी भी बीन के आरंभीकरण से पहले और बाद में एक बीन नाम प्रिंट करता है। आप बीन को पहले और बाद में अधिक जटिल तर्क को लागू कर सकते हैं क्योंकि आपके पास दोनों पोस्ट प्रोसेसर विधियों के अंदर बीन ऑब्जेक्ट पर पहुंच है।

यहाँ की सामग्री है InitHelloWorld.java फ़ाइल -

package com.tutorialspoint;

import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.beans.BeansException;

public class InitHelloWorld implements BeanPostProcessor {
   public Object postProcessBeforeInitialization(Object bean, String beanName) 
      throws BeansException {
      
      System.out.println("BeforeInitialization : " + beanName);
      return bean;  // you can return any other object as well
   }
   public Object postProcessAfterInitialization(Object bean, String beanName) 
      throws BeansException {
      
      System.out.println("AfterInitialization : " + beanName);
      return bean;  // you can return any other object as well
   }
}

निम्नलिखित की सामग्री है MainApp.javaफ़ाइल। यहां आपको शटडाउन हुक को पंजीकृत करने की आवश्यकता हैregisterShutdownHook()वह विधि जो AbstractApplicationContext क्लास पर घोषित की जाती है। यह एक सुंदर शटडाउन सुनिश्चित करता है और प्रासंगिक विध्वंस विधियों को कॉल करता है।

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();
   }
}

निम्नलिखित विन्यास फाइल है Beans.xml init और विध्वंस विधियों के लिए आवश्यक -

<?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>

   <bean class = "com.tutorialspoint.InitHelloWorld" />

</beans>

एक बार जब आप स्रोत और बीन विन्यास फाइल बनाने के साथ हो जाते हैं, तो हम एप्लिकेशन चलाते हैं। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा -

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