मैंने एक स्प्रिंग @कॉन्फ़िगरेशन एनोटेटेड क्लास बनाया है और मैं इसे रिसोर्सलोडर को ऑटोवायर करना चाहता हूं ताकि मैं इसे स्ट्रिंग द्वारा दी गई फ़ाइल को देखने के लिए @Bean विधियों में से एक में उपयोग कर सकूं। जब मैं ऐप चला रहा हूं और संदर्भ शुरू कर रहा हूं तो मुझे ऑटोवायर्ड फ़ील्ड तक पहुंचने वाला एनपीई मिलता है, और डीबग मोड में इसे शून्य/सेट नहीं होने के रूप में दिखाया जाता है। क्या मैं रिसोर्सलोडर के उपस्थित होने की अपेक्षा गलत कर रहा हूँ? क्या मैं गलत तरीके से कह रहा हूं कि कॉन्फ़िगरेशन बीन की ऑटोवॉयरिंग इसके तरीकों को बुलाए जाने से पहले होती है? इस बीन को लोड करने वाले xml कॉन्फ़िगरेशन को <संदर्भ: एनोटेशन-कॉन्फ़िगरेशन /> के साथ टैग किया गया है
@Configuration
public class ClientConfig {
@Autowired
private ResourceLoader resourceLoader;
public @Bean
String configHome() {
return System.getProperty("CONFIG_HOME");
}
public @Bean
PropertiesFactoryBean appProperties() {
String location = "file:" + configHome() + "/conf/webservice.properties";
PropertiesFactoryBean factoryBean = new PropertiesFactoryBean();
factoryBean.setLocation(resourceLoader.getResource(location));
return factoryBean;
}
}
1 उत्तर
मुझे यकीन नहीं है कि यह एक बग है या अपेक्षित व्यवहार है। कभी-कभी यह मेरे लिए काम करता था, कभी-कभी नहीं। वैसे भी, आप जो चाहते हैं उसे प्राप्त करने का एक और तरीका है:
public @Bean PropertiesFactoryBean appProperties(ResourceLoader resourceLoader) {
// resourceLoader is injected correctly
...
}
संबंधित सवाल
नए सवाल
spring
स्प्रिंग फ्रेमवर्क जावा प्लेटफॉर्म पर एप्लिकेशन डेवलपमेंट के लिए एक ओपन सोर्स फ्रेमवर्क है। इसके मूल में घटक आधारित आर्किटेक्चर के लिए समृद्ध समर्थन है, और इसमें वर्तमान में बीस से अधिक उच्च एकीकृत मॉड्यूल हैं।