@Configuration 可以在没有@componentScan 的情况下工作吗(Spring JavaConfig @annotaion)

Can @Configuration work without @componentScan (Spring JavaConfig @annotaion)

--Appconfig.java

@Configuration
public class AppConfig {    

  @Bean(name="helloBean")
  public HelloWorld helloWorld() {
    return new HelloWorldImpl();
   }
}

--interface.java

public interface HelloWorld {
    void printHelloWorld(String msg);
} 

--ipml.java

public class HelloWorldImpl implements HelloWorld {
public void printHelloWorld(String msg) {
    System.out.println("Hello! : " + msg);
   --
}

--App.java

public class App {

public static void main(String[] args) {

    AnnotationConfigApplicationContext context = new 
    new AnnotationConfigApplicationContext(AppConfig.class);

HelloWorld obj = (HelloWorld) context.getBean(HelloWorldImpl.class);

obj.printHelloWorld("Spring3 Java Config");
   }
}

我的程序可以运行,但我的问题是为什么我不需要在 Appconfig.java 中添加 @componentScan

似乎 @Configuration@Bean 可以通过 Spring 找到而无需使用 @componentScan

我想如果你想使用@annotation,你必须使用@componentScan 或者

context:component-scan(xml), 我说得对吗?

@ComponentScan 允许 spring 自动扫描带有 @Component 注释的所有组件。 Spring 使用 base-package 属性,指示在哪里可以找到组件。

@Configuration 是用 @Component 注释的元数据,这标志着它有资格进行 class 路径扫描。

@Configuration (AppConfig class) 在您使用

时注册
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);

@Bean 不需要 @ComponentScan 因为所有这些 bean 都是在 spring 遇到此注释时显式创建的。