@ComponentScan with multiple configuration class : Annotation Based Configuration

前端 未结 3 699
半阙折子戏
半阙折子戏 2021-02-06 05:57

As per Spring Doc-

Configures component scanning directives for use with @Configuration classes. Provides support parallel with Spring XML\'s

3条回答
  •  执念已碎
    2021-02-06 06:20

    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-

    1. Use @Configuration to register bean in rootcontext or dispatchersevletcontext.
    2. Import a class in any @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.

提交回复
热议问题