2012-05-22 93 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

相关问题