2012-05-22 19 views
8

मैं अपने आवेदन को कॉन्फ़िगर करने के लिए वसंत @ कॉन्फ़िगरेशन का उपयोग कर रहा हूं।वसंत एकाधिक @ कॉन्फ़िगरेशन कक्षा

इस पल के लिए मेरे पास एक एकल @ कॉन्फ़िगरेशन क्लास है जहां मेरे सभी सेम घोषित किए गए हैं। चूंकि सेम की संख्या बढ़ रही है (30 से अधिक), मैं इसे कई वर्गों में विभाजित करना चाहता हूं।

कुछ सेम आम वर्गों (मुख्य रूप से उपयोगिता वर्ग) का उपयोग कर रहे हैं:

Foo.class एक उपयोगिता वर्ग Bar.class और Baz.class है दोनों का उपयोग Foo.class

मैं तीन अलग @ कॉन्फ़िगरेशन कक्षाओं (क्रमशः Conf1, Conf2 और Conf3) में Foo, Bar और Baz रखना चाहता हूं

समस्या यह है कि मैं Conf2 और Conf3 से Conf1 का एक उदाहरण के लिए उपयोग नहीं है:

Conf1.class

@Configuration 
public class Conf1 { 
    @Bean 
    public Foo foo() { 
     return new Foo(); 
    } 
} 

Conf2.class

@Configuration 
public class Conf2 { 
    @Bean 
    public Bar bar() { 
     Bar bar = new Bar(); 
     bar.setFoo(conf1.foo()); // Not possible ! 
     return bar; 
    } 
} 

Conf3.class

@Configuration 
public class Conf3 { 
    @Bean 
    public Baz baz() { 
     Baz baz = new Baz(); 
     baz.setFoo(conf1.foo()); // Not possible ! 
     return baz; 
    } 
} 

इस मुद्दे को हल करने के बारे में कोई विचार?

उत्तर

9

आप उन्हें autowire में सक्षम होना चाहिए:

@Configuration 
public class Conf2 { 
    @Autowired 
    Conf1 conf1; 
    ... 
} 

वैकल्पिक रूप से, आप विन्यास के बजाय सेम autowire कर सकते हैं:

@Configuration 
public class Conf2 { 
    @Autowired 
    Foo foo; 
    ... 
} 
+0

निश्चित रूप से @Autowired,! धन्यवाद axtavt – chrisnfoneur

5
@Configuration 
@Import({ DataSourceConfig.class, TransactionConfig.class }) 
public class AppConfig extends ConfigurationSupport { 
     // bean definitions here can reference bean definitions in DataSourceConfig or TransactionConfig 
} 
+0

यह वही था जो मुझे चाहिए क्योंकि मेरे पास एकाधिक डेटा स्रोत हैं और यह SpringWebConfig.class के सभी को लटकाने का एक साफ तरीका था। –

+0

खुशी हुई यह मदद की! :) – jujadhav

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