2015-02-26 6 views
15

के भीतर एक बीन ऑटोवायर करें क्या जावा में लिखी गई स्प्रिंग कॉन्फ़िगरेशन के भीतर स्प्रिंग की @Autowired एनोटेशन का उपयोग करना संभव है?स्प्रिंग के जावा कॉन्फ़िगरेशन

उदाहरण के लिए:

@Configuration 
public class SpringConfiguration{ 

    @Autowired 
    DataSource datasource; 

    @Bean 
    public DataSource dataSource(){ 
     return new dataSource(); 
    } 

    // ... 

} 

जाहिर है एक डेटास्रोत इंटरफ़ेस सीधे instantiated नहीं किया जा सकता है, लेकिन मैं इसे सीधे यहाँ instantiated सरलीकरण के लिए। वर्तमान में, जब मैं उपरोक्त कोशिश करता हूं, तो डेटासोर्स ऑब्जेक्ट शून्य रहता है और स्प्रिंग द्वारा स्वायत्त नहीं होता है।

मुझे @AutowiredFactoryBean<SessionFactory> लौटकर एक हाइबरनेट SessionFactory ऑब्जेक्ट के साथ सफलतापूर्वक काम करने के लिए मिला।

तो मेरा प्रश्न विशेष रूप से: DataSource के संबंध में ऐसा करने का कोई तरीका है? या अधिक आम तौर पर, स्प्रिंग जावा कॉन्फ़िगरेशन के भीतर एक बीन को स्वचालित करने का तरीका क्या है?

मुझे ध्यान रखना चाहिए कि मैं वसंत संस्करण 3.2 का उपयोग कर रहा हूं।

+2

आपको इसे _there_ को स्वचालित करने की आवश्यकता क्यों होगी? –

+0

मैं बस एक एक्सएमएल विन्यास फाइल को जावा में बदलने की कोशिश कर रहा था। मैंने सोचा था कि जब से मैं xml में आईडी द्वारा बीन का संदर्भ दे सकता हूं, तो मुझे जावा कॉन्फ़िगरेशन फ़ाइल में ऑटोवायर एनोटेशन का उपयोग क्यों नहीं करना चाहिए? – Avanst

उत्तर

25

यदि आपको बीन के संदर्भ में @Configuration फ़ाइल के संदर्भ में आवश्यकता है, तो बस बीन विधि का आह्वान करें।

@Bean 
public OtherBean someOtherBean() { 
    return new OtherBean(dataSource()); 
} 

या यह @Bean विधि

@Bean 
public OtherBean someOtherBean(DataSource dataSource) { 
    return new OtherBean(dataSource); 
} 

एक @Configuration वर्ग के जीवन चक्र कभी कभी की तरह आप सुझाव दे रहे हैं autowiring रोकता में autowired है।

+0

यह दिलचस्प है, यह वास्तव में काम करता है आपने वर्णन किया है। ऐसा क्यों है? क्या आप मुझे किसी भी वसंत दस्तावेज के बारे में बता सकते हैं जो इस सटीक मुद्दे के बारे में बात करता है? रास्ते के जवाब के लिए बहुत बहुत धन्यवाद। – Avanst

+0

@Avanst दस्तावेज देखें [यहां] (http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-java-configuration-annotation)। –

+0

@ सॉटिरियोसेलिमैनोलिस, आज मैंने कुछ कठिन घंटों बिताए जो समान समस्या की तलाश में सदस्यों को इंजेक्शन कॉन्फ़िगरेशन क्लास में इंजेक्शन के कारण देख रहे थे। – AlexR

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