请列出getBean
的所有可能来源?
BTW,如果我只是写context.getBean(SomeInterface.class)
,我可以获得接口类的实现吗?
答案 0 :(得分:1)
它们来自Spring应用程序上下文(这就是你所谓的getBean
方法)。
Spring有一个应用程序上下文的概念,它是一个包含诸如Spring管理的所有bean之类的东西的对象。
您可以通过在Spring XML配置文件中配置bean或者通过注释@Component
,@Service
等注释类来将bean放入应用程序上下文中,然后让Spring通过扫描包来找到它们那些课程。
如果你编写context.getBean(SomeInterface.class)
并且有一个实现该接口的Spring bean,那么该方法调用将返回实现该接口的bean。
这些是Spring框架的基本概念。有关其工作原理的详细说明,请参阅Spring文档中的chapter 5, The IoC Container。
答案 1 :(得分:0)
如果你进入ApplicationContext类层次结构,你会发现所有spring Application Context文件都是org.springframework.core.io.DefaultResourceLoader类的子文件。
DefaultResourceLoader的作用是获取当前线程上下文类加载器(如果没有提供)。所以我们可以理解所有应用程序上下文文件首先加载定义的类。 Application Context加载xml文件中定义的所有bean,使用@Bean批注或其他可用的spring注释进行标记。一旦上下文扫描注释和/或xml并加载类加载器中的所有bean。上下文首先创建依赖项并将它们注入依赖项。
要获取context.getBean(SomeInterface.class),请参阅以下文档。
根据我对文档的理解,如果确定了一个实现bean类,你将得到bean。