As per Spring Doc-
Configures component scanning directives for use with @Configuration classes. Provides support parallel with Spring XML\'s
For your Question 1 -
yes, you can register a bean using @ComponentScan
in any of the configuration bean which is registered in spring container.you can register a bean into container by any of the following way-
@Configuration
to register bean in rootcontext
or
dispatchersevletcontext
.@Configuration
bean (which is already registered in container).Let say- you have MvcConfig
class in which you are scanning component-
@ComponentScan(basePackages = {"xxxx","yyyy","zzzz"})
@Configuration
public class MvcConfig {
....
}
To register MvcConfig
in container you must do-
Either
new AnnotationConfigWebApplicationContext().register(MvcConfig.class);
Or
new AnnotationConfigWebApplicationContext().register(AnotherConfig.class);
@Configuration
@Import({MvcConfig.class})
public class AnotherConfig {
....
}
For your Question 2 -
Here spring is not only registering MyConfiguration.class
but also all the component classes those are present in the package in which MyConfiguration
defined.