2014-12-30 7 views
5

org.springframework.boot.loader.Launcher डिफ़ॉल्ट रूप से हमेशा लांच() विधि (https://github.com/spring-projects/spring-boot/blob/master/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/Launcher.java#L105) में एक पृष्ठभूमि धागा अंडे जाएगा। क्या इसे एक ही धागे में निष्पादित करने के लिए इसे बदलने का कोई आसान तरीका है, इसलिए मेरा सेवा लॉन्चर यह जान सकता है कि एप्लिकेशन पूरी तरह से लोड हो गया है, और तुरंत हर बार सफलता से बाहर निकलने के लिए नहीं।स्प्रिंग बूट तुल्यकालिक लांचर

+0

इसे देख आप अपने खुद के कार्यान्वयन का उपयोग, jarlauncher/warlauncher वर्ग का विस्तार करने और प्रक्षेपण विधि रद्द कर सकते थे। – MarianP

+0

हाँ मैं समझता हूं कि मैं आसानी से उस विधि को ओवरराइड कर सकता हूं। समस्या यह है कि वसंत-बूट जार लॉन्च विधि के लिए एक अलग मुख्य क्लास का उपयोग करने की अनुमति नहीं देता है। –

+0

संदर्भ वर्ग लोडर को नए 'थ्रेड' के बिना सेट नहीं किया जा सकता है, इसलिए यदि आप इस विधि को बदलने का प्रयास करते हैं तो आपको परेशानी हो सकती है। वास्तव में आपका "सेवा लॉन्चर" क्या है? –

उत्तर

0

मेरा मानना ​​है कि आप इस तरह से श्रोता रजिस्टर कर सकते हैं:

public static void main(String[] args) { 
    SpringApplication app = new SpringApplication(WsBootClientApplication.class); 

    app.addListeners(new ApplicationListener<ContextStartedEvent>() { 
     @Override 
     public void onApplicationEvent(ContextStartedEvent event) { 
     //do your stuff 
     } 
    }); 
    app.run(args); 
} 

तो ContextStartedEvent आप के लिए सही घटना नहीं है, आप ApplicationEvent साथ ContextStartedEvent बदल सकते हैं। यह अधिक सामान्य है और आपके आवेदन को सुन सकते हैं सभी संदर्भ जीवन चक्र घटनाओं को संभालेगा।