Spring多个@Configuration类

chr*_*eur 12 java spring

我使用Spring @Configuration来配置我的应用程序.

目前我有一个@Configuration类,其中声明了我的所有bean.随着bean数量的增长(超过30个),我想将它分成许多类.

一些bean使用公共类(主要是实用程序类):

Foo.class是一个实用类 Bar.class和Baz.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();
    }
}
Run Code Online (Sandbox Code Playgroud)

Conf2.class

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

Conf3.class

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

关于如何解决这个问题的任何想法?

axt*_*avt 19

你应该能够自动装配它们:

@Configuration 
public class Conf2 {
    @Autowired
    Conf1 conf1;
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以自动装配bean而不是配置:

@Configuration 
public class Conf2 {
    @Autowired
    Foo foo;
    ...
}
Run Code Online (Sandbox Code Playgroud)


小智 12

@Configuration
@Import({ DataSourceConfig.class, TransactionConfig.class })
public class AppConfig extends ConfigurationSupport {
      // bean definitions here can reference bean definitions in DataSourceConfig or TransactionConfig
}
Run Code Online (Sandbox Code Playgroud)