在下面的代码中,AppConfig
已注册到应用程序上下文,但FooConfig
未注册。并且FooConfig
也未导入AppConfig
但是,应用程序上下文可以扫描FooConfig
,它会将FooConfig
注册到应用程序上下文。并且FooConfig
中定义的bean可以在当前上下文中发现
我理解正确吗?
因此,如果导入的配置类在扫描范围内,@Import
是可选的,对吧?
package app;
@Configuration
public class FooConfig { @Bean public Foo foo() { return new FooImpl(); } }
package app;
@Configuration
@ComponentScan("app")
public class AppConfig { }
package app;
public class App {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
Foo f = (Foo) context.getBean("foo");
}
}
答案 0 :(得分:0)
是。因为@ComponentScan
初始化设置会从app
包中获取所有内容,包括FooConfig
。没有它,您将需要显式导入。
或者,您可以直接为ApplicationContext构造函数提供所有配置类:
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class, FooConfig.class);