2013-03-09 6 views
6

में लोड हुए हैं परीक्षण और तैनाती में अजीब त्रुटियों की एक श्रृंखला है। वे यह इंगित करते हैं कि मेरे कुछ बीन्स संदर्भ में लोड नहीं हो रहे हैं, भले ही उन्हें applicationContext.xml में परिभाषित किया गया हो।जांचें कि कौन से सेम वसंत संदर्भ

क्या बीन्स वास्तव में लोड किए गए परीक्षण के दौरान जांचने का कोई तरीका है? या रन टाइम पर लोड बीन्स की पूरी सूची खोजने के लिए?

धन्यवाद, ख

उत्तर

4

स्टार्टअप पर, जानकारी के स्तर पर वसंत लॉग सब सेम के नाम एक संदर्भ लोड करता है। या कोड में, आप सभी बीन नाम प्राप्त करने के लिए getBeanDefinitionNames() का उपयोग कर सकते हैं।

+0

का उपयोग कर रहा संदिग्ध यह आसान होगा बंद, यह एक कोशिश करने और धन्यवाद देने के लिए! –

+1

यह उन लोगों के लिए एक परीक्षण था जो इसकी आवश्यकता है: '@' ऑटोवायर एप्लिकेशनकॉन्टेक्स्ट एप्लिकेशन कॉन्टेक्स्ट; '@' टेस्ट सार्वजनिक शून्य परीक्षण कॉन्टेक्स्ट() { स्ट्रिंग [] beans = applicationContext.getBeanDefinitionNames(); (स्ट्रिंग बी: सेम) { System.out.println ("***" + b); } } –

0

यदि एक से अधिक संदर्भ हैं तो कहते हैं कि यदि आप वसंत एमवीसी का उपयोग कर रहे हैं तो आप इस तरह कुछ अधिक शक्तिशाली उपयोग कर सकते हैं।

public class SampleContextApplicationListener implements ApplicationListener<ApplicationContextEvent> { 

    private Map<String,ApplicationContext> contextMap = new Hashtable<String,ApplicationContext>(); 

    @Override 
    public void onApplicationEvent(ApplicationContextEvent event) { 
     if(event instanceof ContextStartedEvent || event instanceof ContextRefreshedEvent){ 
      this.getContextMap().put(event.getApplicationContext().getDisplayName(), event.getApplicationContext()); 
     } 

    } 

    public Map<String,ApplicationContext> getContextMap() { 
     return contextMap; 
    } 
} 

फिर आप श्रोता आवश्यक होने पर ही इंजेक्षन कर सकते हैं और contextens के नक्शे को निकालने और उसके बाद अपने सभी सेम के लिए यह interogate, getBeanDefinitionNames()

@Autowired 
private StatusTestsApplicationListener listener; 
+0

धन्यवाद @ams मुझे यकीन नहीं है कि इसका उपयोग कैसे करें। –

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