2012-05-22 96 views
8

我正在使用Spring @Configuration來配置我的應用程序。Spring多個@Configuration類

目前我有一個@Configuration類,其中聲明瞭所有的bean。 隨着豆類數量的增加(超過30個),我想將它分成許多類。

一些豆使用通用類(主要是實用類):

讓Foo.class是一個實用類 Bar.classBaz.class都使用讓Foo.class

我想在三個不同的@Configuration類(分別爲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

你應該能夠自動裝配他們:

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

或者,您可以自動裝配豆,而不是配置:

@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

相關問題