java - स्प्रिंग ApplicationListener घटनाओं को प्राप्त नहीं कर रहा है




spring applicationcontext (2)

मेरे पास निम्नलिखित एप्लिकेशन है:

package org.mycompany.listeners;

import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextStartedEvent;

public class MyApplicationListener implements ApplicationListener<ContextStartedEvent> {

  public MyApplicationListener() {
    super();
    System.out.println("Application context listener is created!");
  }

  /**
   * {@inheritDoc}
   */
  public void onApplicationEvent(final ContextStartedEvent event) {
    System.out.println("Context '" + event.getApplicationContext().getDisplayName() + "' is started!");
  }

}

और निम्नलिखित सेम परिभाषा:

<bean name="myApplicationListener" class="org.mycompany.listeners.MyApplicationListener" />

मैं देख सकता हूं कि बीन को निर्माता द्वारा संदेश के रूप में बनाया गया है, लेकिन संदर्भ प्रारंभ घटना को कभी राहत नहीं मिली। मैं क्या खो रहा हूँ?


चूँकि आपके पास कोई आलसी भरी हुई फलियाँ नहीं हैं (आपके अनुसार) तो आप गलत कारण के लिए घटनाओं का उपयोग करने की सबसे अधिक संभावना रखते हैं और शायद इसके बजाय कुछ InitializingBean इंटरफ़ेस का उपयोग करना चाहिए:

public class MyBean implements InitializingBean {

    @Override
    public void afterPropertiesSet() throws Exception {
        // ...
    }

}

स्प्रिंग मैनुअल से:

बीन जीवन चक्र के कंटेनर के प्रबंधन के साथ बातचीत करने के लिए, आप स्प्रिंग इनिशियलाइजिंग बीन और डिस्पोजेबल बीन इंटरफेस को लागू कर सकते हैं। कंटेनर बाद के लिए पूर्व और नष्ट करने के लिए afterPropertiesSet () को कॉल करता है और सेम के प्रारंभिककरण और विनाश पर कुछ कार्यों को करने की अनुमति देने के लिए उत्तरार्द्ध के लिए। आप अपनी कक्षाओं को इन-विधि के उपयोग के माध्यम से स्प्रिंग इंटरफेस में युग्मित किए बिना कंटेनर के साथ समान एकीकरण भी प्राप्त कर सकते हैं और विधि ऑब्जेक्ट परिभाषा मेटाडेटा को नष्ट कर सकते हैं।

स्रोत: स्प्रिंग फ्रेमवर्क - जीवनचक्र कॉलबैक


यकीन नहीं होता कि यह मदद करता है, लेकिन मैं अस्पष्ट रूप से एक समान समस्या होने को याद करता हूं, जिसे प्रीलोडिंग द्वारा हल किया गया था और आलसी लोडिंग नहीं। यहां दोनों का त्वरित अवलोकन है







applicationcontext