【发布时间】:2019-07-15 11:22:32
【问题描述】:
我最近开始学习spring,开始看书,遇到了bean,ioc和di,我不太明白它们是怎么工作的,我有自己写的现成的spring程序,但是ioc是怎么工作的我不知道了解普通班的区别是什么?)你能用简单的例子解释一下吗?我会很高兴所有的答案,非常感谢你
【问题讨论】:
标签: spring
我最近开始学习spring,开始看书,遇到了bean,ioc和di,我不太明白它们是怎么工作的,我有自己写的现成的spring程序,但是ioc是怎么工作的我不知道了解普通班的区别是什么?)你能用简单的例子解释一下吗?我会很高兴所有的答案,非常感谢你
【问题讨论】:
标签: spring
这里有一个简单的解释,因为您已经提出了申请。这是在 Spring 应用程序的上下文中,因为这 3 个概念的应用不同,具体取决于您所在的框架/上下文。
IOC 是控制反转。这意味着应用程序本身不会管理它的生命周期/控制流。框架(Spring)将。因此,您只需告诉框架您希望应用程序的(某些)元素如何协同工作。
DI 是依赖注入。它是一种特定类型的 IOC,框架将管理对象使用的依赖项(您可以称为依赖项:服务)。
Bean 是由框架管理的对象。
这是 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 的实例注入 到@987654328 中@ (DI)。因此,这些实例是 Beans,由 Spring (IoC) 管理。
如果您需要 bean(服务),则必须询问框架(使用 context.getBean(foo) 之类的东西):您不应该在任何地方做 new Foo()。 Spring 保留所有这些实例的内部映射。
同样,它是在 Spring 应用程序的上下文中。例如,如果您使用的是 JEE 应用程序,这些定义会略有不同。
【讨论】: