I am using Spring @Configuration
annotation to configure my application.
Currently, I have a single @Configuration
class where all my beans are
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.