SpringBoot @Autowire 为什么这个例子有效?

SpringBoot @Autowire why does this example work?

我创建了这个 class:

import org.springframework.stereotype.Component;

...

@Component("notTheNameTestMe") //shouldnt this only work with testMe ?
public class TestMe {

    public void showMsg() {
        System.out.println("Autowiring works");
    }

}

我很快就会用这种方式使用它 class(或更好:控制器):

import com.example.TestMe; //shouldnt this be not necessary with autowire? But getting error else...

...

@Autowired
private TestMe testMe;

...

this.testMe.showMsg();

但这完美地工作(所以也许我不是真的在这里使用自动装配?),如果我将整个 TestMe class 重命名为 TestMeSomething 它甚至可以工作(如果我在第二个 [=18= 中调整导入]) 我真的不明白@Autowired 是做什么的。我认为它只是扫描 SpringBoot 组件(由 @Component() 中的字符串命名,当它找到匹配项时它会注入依赖项。但在我的示例中,匹配是不可能的,我仍然可以看到消息“Autowiring works”在控制台中。如果我真的在这里使用自动装配,这不应该是这样的吗?我理解错了什么?那么使用 new TestMe() 有什么区别?我已经有了导入或依赖关系?所以不是真正的依赖注入,或者?

Spring 未对 @Component 注释中的名称进行操作。而是使用 class 的名称。它只是找到一个名为 TestMe 的 class,因为这是您用 @Autowired.

注释的变量的类型