2011-12-21 9 views
16

जब मेरा वसंत वेब ऐप बंद हो जाता है, तो क्या कोई ऐसी घटना है जो मैं किसी भी तरह से वायरअप कर सकता हूं कि मैं कुछ पूल आदि को खाली करने के लिए कुछ क्लीनअप कोड कर सकता हूं।क्या स्प्रिंग में क्लीनअप कोड डालने के लिए शट डाउन प्रक्रिया है?

उत्तर

27

आप इस्तेमाल कर सकता निम्नलिखित

  1. को नष्ट-विधि @ amir75 के रूप में सिफारिश की गई है

  2. @PreDestroy एनोटेशन

  3. DisposableBean कार्यान्वित करके विधि को नष्ट ओवरराइड।

इनके बारे में सभी deatails Disposable Callbacks पर पाया जा सकता है।

6

वसंत बीन्स में 'विनाश-विधि' विशेषता है, जो जब आप अपना संदर्भ 'बंद' करते हैं तो उसे बुलाया जाए।

<bean id="bean1" 
    destroy-method="stop" 
    class="com.example.Bean" /> 

ताकि इसे बंद करने के लिए, आप पास() विधि फोन करता हूँ में:

http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/context/support/AbstractApplicationContext.html#close%28%29

आशा है कि मदद करता है (या बस नीचे कंटेनर अगर उचित बंद)।

4

इसे संभालने के लिए गैर-वसंत तरीका ServletContextListener लागू करने वाली कक्षा लिखना है और contextDestroyed मीटर में अपना क्लीनअप करें ethod। आप web.xml में एक संदर्भ श्रोता के रूप में अपनी कक्षा जोड़ देंगे।

+1

इस दृष्टिकोण के साथ दिक्कत यह है कि वसंत शायद कर रहा है वही बात, और यह स्पष्ट नहीं है कि आपका कस्टम सर्वलेट संदर्भ श्रोता पहले या स्प्रिंग के बाद चलाएगा या नहीं। यह जीवन को अजीब बना सकता है। –

4

जेएसआर -50 विनिर्देश के आधार पर आधुनिक वसंत आवेदन में उपयोग करने के लिए सबसे अच्छा अभ्यास @PreDestroy एनोटेशन है क्योंकि इस दृष्टिकोण का उपयोग करने से आपके बीन्स वसंत से निकल जाएंगे।

1

स्प्रिंग बूट logback उदाहरण परियोजना के अनुसार, आप प्रवेश प्रणाली को साफ करने के संदर्भ बंद हो जाना चाहिए: https://github.com/spring-projects/spring-boot/commit/10402a651f1ee51704b58985c7ef33619df2c110

उदाहरण:

public static void main(String[] args) throws Exception { 
     SpringApplication.run(SampleLogbackApplication.class, args).close(); 
    } 
संबंधित मुद्दे