我最近开始学习春天,开始阅读并遇到了bean,ioc和di,我不太明白他们是如何工作的,我有自己写的现成的春季课程,但ioc如何在那里工作我不明白是什么差异是正常的,它是什么?)你能用简单的例子解释一下吗?我将很高兴得到所有答案,非常感谢你
这里有一个快速的解释,因为你已经提出了一个应用程序。这是在Spring应用程序的上下文中,因为这3个概念的应用取决于您所在的框架/上下文。
IOC是控制反转。这意味着应用程序不会管理它的生命周期/控制流本身。框架(Spring)将会。因此,您只需告诉框架您希望应用程序中的某些元素如何协同工作。
DI是依赖注入。它是一种特定的IOC,框架将管理对象使用的依赖项(您可以调用依赖项:服务)。
Bean是Framework管理的对象。
这是applicationContext.xml的一部分:
<beans>
<bean id="foo" class="x.y.Foo">
<constructor-arg ref="bar"/>
<constructor-arg ref="baz"/>
</bean>
<bean id="bar" class="x.y.Bar"/>
<bean id="baz" class="x.y.Baz"/>
</beans>
它将使用此文件来实现类Foo
,Bar
和Baz
(IoC),并将Bar
和Baz
的两个实例注入Foo
(DI)。因此,这些实例是由Spring(IoC)管理的Beans
。
如果你需要一个bean(一个服务),你将不得不问框架(使用像context.getBean(foo)
这样的东西):你不应该在任何地方做new Foo()
。 Spring保留所有这些实例的内部映射。
同样,它是在Spring应用程序的上下文中。例如,如果您使用的是JEE应用程序,这些定义会略有不同。