पर काम करने का प्रतीत नहीं होता है, मुझे स्प्रिंग के एप्लिकेशन संदर्भ लोड होने के तुरंत बाद कुछ होने की आवश्यकता है। जैसा कि मैं इसे समझता हूं, मुझे लाइफसाइकिल का कार्यान्वयन करने और संदर्भ के अंदर एक बीन संदर्भ डालने की आवश्यकता है। तो मैं अपने संदर्भ में कुछ इस तरह है:मुझे स्प्रिंग्स लाइफसाइकिल
<bean id="mySpringLifecycle" class="com.my.project.MySpringLifecycle" />
वर्ग इस तरह दिखता है: "। जीवन चक्र शुरू हो गया है"
public class MySpringLifecycle implements Lifecycle {
@Override
public void start() {
System.out.println("The lifecycle has started.");
}
@Override
public void stop() {
return;
}
@Override
public boolean isRunning() {
return true;
}
}
मैं कोई त्रुटि मिलती है, लेकिन MySpringLifecycle कभी बाहर प्रिंट, और मेरा आवेदन ठीक शुरू होता है।
संपादित करें:
यह निश्चित कोड है:
public class MySpringLifecycle implements SmartLifecycle {
private volatile boolean isRunning = false;
@Override
public boolean isAutoStartup() {
return true;
}
@Override
public void stop(Runnable r) {
System.out.println("STOPPED RUNNABLE!!!");
isRunning = false;
}
@Override
public void start() {
System.out.println("STARTED!!!");
isRunning = true;
}
@Override
public void stop() {
System.out.println("STOPPED!!!");
isRunning = false;
}
@Override
public boolean isRunning() {
return isRunning;
}
@Override
public int getPhase() {
return 1;
}
}
एक तरफ ध्यान दें मैं भी कोई वैकल्पिक समाधान है कि मैं भी उपयोग कर सकते हैं उल्लेख करना चाहता था के रूप में।
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
ContextLoaderListener एक विधि पर यह contextInitialized कहा जाता है: मैं अपने web.xml में निम्नलिखित है। तो मैंने जो किया वह मेरा अपना कार्यान्वयन बनाया गया और इसके बजाय web.xml में जोड़ा गया। मेरे कार्यान्वयन में मैंने ContextLoaderListener को विस्तारित किया, संदर्भ के लिए ओवरराइड प्रदान किया गया प्रारंभिक विधि, जिसे पहले उस विधि के लिए सुपर कहा जाता था, और फिर अपनी कार्यक्षमता निष्पादित की गई। यह केवल एक बार निष्पादित हो जाता है, और अच्छी तरह से काम करता प्रतीत होता है।
http://static.springsource.org/spring/docs/3.0.x/reference/beans.html#beans-factory-lifecycle-processor से उद्धरित आप द्वारा परिभाषित रोक विधि देख सकते हैं SmartLifecycle कॉलबैक स्वीकार करता है। कार्यान्वयन की शटडाउन प्रक्रिया पूरी होने के बाद किसी भी कार्यान्वयन को कॉलबैक की रन() विधि का आह्वान करना होगा। – BPS
क्या होगा यदि आपकी कक्षा अतिरिक्त रूप से एक और कक्षा का विस्तार करे। इसके अलावा उल्लिखित वर्ग वसंत <बीन = "myBean"> में परिभाषित किया गया है। अपने वर्ग उदाहरण में इन पैरामीटर को तुरंत कैसे चालू करें? –
luksmir