Java SpringGetBean方法返回的bean来自哪里?

Java SpringGetBean方法返回的bean来自哪里?,java,spring,dependency-injection,aop,Java,Spring,Dependency Injection,Aop,您能列出所有可能的getBean来源吗 顺便说一句,如果我只写context.getBean(SomeInterface.class),我能得到接口类的实现吗?它们来自Spring应用程序上下文(这就是您在上调用的getBean方法) Spring有应用程序上下文的概念,应用程序上下文是一个包含诸如Spring管理的所有bean之类的内容的对象 您可以通过在SpringXML配置文件中配置bean,或者使用注释(如@Component、@Service等)对类进行注释,然后让Spring通过扫描

您能列出所有可能的
getBean
来源吗


顺便说一句,如果我只写
context.getBean(SomeInterface.class)
,我能得到接口类的实现吗?

它们来自Spring应用程序上下文(这就是您在上调用的
getBean
方法)

Spring有应用程序上下文的概念,应用程序上下文是一个包含诸如Spring管理的所有bean之类的内容的对象

您可以通过在SpringXML配置文件中配置bean,或者使用注释(如
@Component
@Service
等)对类进行注释,然后让Spring通过扫描这些类的包来找到它们,从而将bean放入应用程序上下文中

如果您编写
context.getBean(SomeInterface.class)
并且有一个Springbean实现该接口,那么该方法调用将返回实现该接口的bean


这些是Spring框架的基本概念。有关其工作原理的详细说明,请参见Spring文档。

如果进入ApplicationContext类层次结构,您会发现所有Spring应用程序上下文文件都是org.springframework.core.io.DefaultResourceLoader类的子级

DefaultResourceLoader所做的是获取当前线程上下文类加载器(如果没有提供)。所以我们可以理解,所有应用程序上下文文件首先加载定义的类。应用程序上下文加载xml文件中定义的所有Bean,使用@Bean注释或其他可用的spring注释进行标记。一旦上下文扫描注释和/或xml并加载类加载器中的所有bean。上下文首先创建依赖项并将它们注入依赖项中

要获取context.getBean(SomeInterface.class),请参阅下面的文档

根据我对文档的理解,如果定义了确切的一个实现bean类,您将获得bean