2011-04-14 15 views
9

के साथ वसंत संदर्भ लोड हो रहा है मैं अपने ClassLoader उदाहरण के साथ वसंत संदर्भ लोड करने के बारे में कैसे जा सकता हूं?विशिष्ट क्लासलोडर

उत्तर

12

कई वसंत संदर्भ लोडर (उदाहरण के लिए ClassPathXmlApplicationContext ) DefaultResourceLoader के उप-वर्ग हैं।

DefaultResourceLoader में constructor है जहां आप क्लासलोडर निर्दिष्ट कर सकते हैं और setClassLoader विधि भी हो सकती है।

तो स्प्रिंग कॉन्टेक्स्ट लोडर के कन्स्ट्रक्टर को ढूंढने का आपका काम है, जहां आप क्लासलोडर निर्दिष्ट कर सकते हैं, या बस इसे बना सकते हैं, और उसके बाद सेटलोडर को सेट करने के लिए सेट का उपयोग करें।

0

org.springframework.context.support.ClassPathXmlApplicationContext कक्षा आपके लिए यहां है।

+0

इस वर्ग नहीं करता आप वर्ग लोडर में गुजरती हैं। यह सही जवाब नहीं है। – JustinKSU

+0

ClassPathXmlAplicationContext DefaultResourceLoader का उप-वर्ग होने के कारण, यह setClassloader विधि को प्राप्त करता है। तो आप वास्तव में अपने वर्ग लोडर पास कर सकते हैं। – sebastiencol

+0

यह सच है, लेकिन आप रचनाकारों का वारिस नहीं करते हैं। आप केवल कक्षा (https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/support/ClassPathXmlApplicationContext.html) पर घोषित किए गए लोगों का उपयोग कर सकते हैं – JustinKSU

5
final ClassLoader properClassLoader = YourClass.class.getClassLoader(); 

    appContext = new ClassPathXmlApplicationContext("application-context.xml") { 

     protected void initBeanDefinitionReader(XmlBeanDefinitionReader reader) { 
      super.initBeanDefinitionReader(reader); 
      reader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_NONE); 
      reader.setBeanClassLoader(properClassLoader); 
      setClassLoader(properClassLoader); 

यहाँ देखें अगर आप OSGi प्रयोजनों के लिए यह कर रहे हैं: How do I use a Spring bean inside an OSGi bundle?

+0

मुझे यह करने की भी आवश्यकता है जेनकींस प्लगइन में वसंत संदर्भ लोड करने के लिए। – Dana

संबंधित मुद्दे