由于依赖注入意味着控制反转,我在以下调用中看不到IOC:
Car car = (Car)ApplicationContext.getBean("car");
在课堂上解决问题不是春天,因为我自己将Car写入了代码。
此外,所有的书都谈到了两种DI:setter和构造函数DI。
所以我想知道调用ApplicationContext.getBean()是否意味着任何类型的依赖注入和IOC或者根本没有DI。
答案 0 :(得分:1)
没有。以这种方式获取bean不是依赖注入。它没有被注射。可能会注入该bean的字段。
有时候真的没办法,但总的来说,尽量避免这种情况。
答案 1 :(得分:0)
在课堂上解决问题不是春天,因为我自己将Car写入了代码。
在这种情况下,你会得到NoSuchBeanDefinitionException
。你需要告诉Spring它需要管理的每个类 - 有多种方法可以做到这一点,从自动装配到描述符中的显式定义。
答案 2 :(得分:0)
getBean
确实使用与Spring注入相同的配置(applicationContext
),但是您的示例没有使用任何依赖注入。 (那么Car
bean可以注入它的依赖项,所以我们真的不知道你的例子。)
但通常依赖注入意味着你自己不做任何程序设置(Car car = something)。 Spring容器将为您创建car
实例,并使用car
的setter或它的构造函数,将注入x需要工作的依赖项。
答案 3 :(得分:0)
我不知道为什么试图以这种方式获取Car引用...如果你想在另一个类中使用Car的引用,你可以简单地使用setter或构造函数注入你所说的..如果你按照上面的方式使用它,我看不到任何类型的DI。我们可以肯定的一点是,当你试图从应用程序上下文中获取引用时,bean由IOC容器管理。