Java 在简单的外行中';getBean在春天做什么?
考虑这样一行代码Java 在简单的外行中';getBean在春天做什么?,java,spring,Java,Spring,考虑这样一行代码 AutomobileDriver ad=(AutomobileDriver)appContext.getBean("increaseSpeed"); 假设有一个IncreaseSpeed类继承自AutomobileDriver类 getBean做什么?它的主要功能是什么 在Spring中,您可以定义一个bean并给它一个id。通常,Spring希望您使用依赖注入来访问bean。然而,Spring提供了getBean,作为通过其id访问bean的另一种方式 基本上,您的代码将返
AutomobileDriver ad=(AutomobileDriver)appContext.getBean("increaseSpeed");
假设有一个IncreaseSpeed
类继承自AutomobileDriver
类
getBean
做什么?它的主要功能是什么 在Spring中,您可以定义一个bean并给它一个id。通常,Spring希望您使用依赖注入来访问bean。然而,Spring提供了getBean
,作为通过其id访问bean的另一种方式
基本上,您的代码将返回一个id为“increaseSpeed”的bean实例。bean是一个提供一些功能的组件,bean的名称表示它将是increaseSpeed 这些组件在名为“应用程序上下文”的上下文中注册,可以按名称查找。因此,如果你想提高速度,看看你的应用程序上下文中有什么可以做到这一点 更多技术:
此代码正在从Spring应用程序上下文请求名为
increaseSpeed
的bean。将应用程序上下文视为可用对象池,这些对象已从Spring配置XML中配置。当应用程序上下文启动时,它会在配置中创建bean。这个电话只是询问已经在那里的那个。应用程序上下文以java.lang.Object
的形式返回此“bean”,因此必须将其转换为适当的类型
您可能会将此调用视为Spring应用程序中的入口点。要从应用程序上下文中取出第一个对象,需要进行此调用。从应用程序上下文中,此对象可能有到Spring注入的其他对象的链接。在“简单的外行术语”中:
AutomobileDriver
这仍然是控制反转,因为实现是在别处决定的。这需要更多的体力劳动,但概念上是一样的。@DaveNewton不完全一样,因为应用程序知道IOC容器。在经典的IOC场景中,bean不知道依赖项来自何处。