I am using Spring @Configuration
annotation to configure my application.
Currently, I have a single @Configuration
class where all my beans are
@Configuration
@Import({ DataSourceConfig.class, TransactionConfig.class })
public class AppConfig extends ConfigurationSupport {
// bean definitions here can reference bean definitions in DataSourceConfig or TransactionConfig
}
Spring framework chapter-5 explained it very nicely.
@ExternalBean : One configuration class may need to reference a bean defined in another configuration class (or in XML, for that matter). The @ExternalBean annotation provides just such a mechanism. When JavaConfig encounters a method annotated as @ExternalBean, it replaces that method definition with a lookup to the enclosing bean factory for a bean with the same name as the method name
@Import : @Import represents JavaConfig's equivalent of XML configuration's element. One configuration class can import any number of other configuration classes, and their bean definitions will be processed as if locally defined
ConfigurationSupport : As a convenience, @Configuration classses can extend ConfigurationSupport, primarily in order to facilitate easy lookup of beans from the enclosing BeanFactory / ApplicationContext.
You should be able to autowire them:
@Configuration
public class Conf2 {
@Autowired
Conf1 conf1;
...
}
Alternatively, you can autowire beans rather than configurations:
@Configuration
public class Conf2 {
@Autowired
Foo foo;
...
}