2015-09-04 6 views
7

हैलो मैं वसंत बूट का उपयोग करने के लिए अपने पुराने कोड को फिर से लिखने की कोशिश कर रहा हूं। मेरे पास एक श्रोता public class ExecutorListener implements ServletContextListener है।वसंत बूट में ServletContextListener को कैसे पंजीकृत करें

मैं इस श्रोता को वसंत बूट के लिए कैसे पंजीकृत कर सकता हूं? मैं कोशिश की है:

@SpringBootApplication 
@ComponentScan 
public class Application extends SpringBootServletInitializer { 

    @Override 
    public void onStartup(ServletContext servletContext) throws ServletException { 
     super.onStartup(servletContext); 
     servletContext.addListener(new ExecutorListener()); 
    } 

} 

लेकिन contextInitialized विधि कहा जाता है नहीं है।

उत्तर

10

आप चीजों की आज़मा सकते हैं:

@Bean 
public DispatcherServlet dispatcherServlet() { 
    DispatcherServlet servlet=new DispatcherServlet(); 
    servlet.getServletContext().addListener(new ExecutorListener()); 
    return servlet; 
} 

@Bean 
public ServletRegistrationBean dispatcherServletRegistration() { 
    ServletRegistrationBean registrationBean = new ServletRegistrationBean(dispatcherServlet(), "/rest/v1/*"); 
    registrationBean 
      .setName(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME); 


    return registrationBean; 
} 
13

तो एक का उपयोग कर:

@Bean 
public ExecutorListener executorListener() { 
    return new ExecutorListener(); 
} 

या

आप यह स्पष्ट रूप से ServletRegistrationBean बनाने के साथ की कोशिश कर सकते हैं: एक @Bean स्पष्ट रूप रजिस्टर ExecutorListener एम्बेडेड कंटेनर, स्प्रिंगबूट 1.3.0+ एन का उपयोग करते समय जल्द ही एक तिहाई विकल्प होगा अपने ServletContextListener को @WebListener के साथ सर्वलेट spec 3 से कार्यान्वित करें, फिर नए @ServletComponentScan के साथ अपने स्प्रिंग @Configuration कक्षाओं में से एक को एनोटेट करें (और वैकल्पिक रूप से यह बताएं कि कौन से पैकेज फ़िल्टर, सर्लेट और श्रोताओं के लिए स्कैन करने के लिए)।

केवल पल हालांकि पर 1.3.0+ में उपलब्ध: http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/web/servlet/ServletComponentScan.html

डॉक्स: http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-embedded-container-servlets-filters-listeners

0

मामले में आप टिप्पणियों का उपयोग करने ही, बनाने के अपने ExecutorListenerServletContextInitializer को लागू करने और जैसे ऑटो खोज पसंद करते हैं इसे javax.annotation.ManagedBean के साथ एनोटेट करें। वहां से, बस onStartup विधि लागू करें:

@ManagedBean 
public final class ExecutorListener implements ServletContextInitializer { 
    ... 
    @Override 
    public void onStartup(ServletContext servletContext) throws ServletException { 
     ... 
    } 
}