什么是bean,IoC和DI?

14 浏览
0 Comments

什么是bean,IoC和DI?

最近我开始学习Spring,开始阅读并接触到了bean、IOC和DI。我不太理解它们是如何工作的,我有些自己编写的Spring程序,但是IOC是如何工作的,我不明白普通类和它有什么区别。你能用简单的例子解释一下吗?我将非常感激所有的回答,非常感谢。

0
0 Comments

什么是Bean,IoC和DI?

在这篇文章中,我们将讨论什么是Bean,IoC(控制反转)和DI(依赖注入)。这些概念在Spring框架中有着不同的应用方式。

首先,IoC(控制反转)意味着应用程序不再自己管理其生命周期和控制流程,而是由框架(如Spring)来管理。因此,你只需要告诉框架你希望应用程序的哪些元素如何协同工作。

其次,DI(依赖注入)是IoC的一种具体实现,它是指框架将自动管理对象所使用的依赖关系(也可以称之为服务)。在下面的示例代码中,我们可以看到如何使用DI将一个对象注入到另一个对象中。

Bean是由框架管理的对象。在Spring的应用程序上下文(applicationContext.xml)中,我们可以定义一组Bean,并指定它们的依赖关系。框架将根据这些定义来实例化这些类,并将依赖的实例注入到对应的类中。

下面是一个applicationContext.xml的示例代码:


  
      
      
  
  
  

在这个示例中,框架会根据这个文件来实例化类Foo、Bar和Baz,并将Bar和Baz的实例注入到Foo中。这些实例都是由Spring框架管理的Bean。

如果你需要使用一个Bean(服务),你需要向框架请求它(使用类似于`context.getBean(foo)`的方式),而不是在任何地方使用`new Foo()`来创建实例。Spring会在内部维护一个实例的映射表。

以上是在Spring应用程序的上下文中讨论的。如果你在一个JEE应用程序中,这些定义可能会稍有不同。

对于一个新手来说,使用Spring来委托对象管理并使用IoC有什么好处呢?你可以参考这个问题,它更深入地讨论了IoC的优势(无论是Spring还是其他框架):[什么是控制反转,为什么应该使用它](https://softwareengineering.stackexchange.com/questions/131446/what-is-inversion-of-control-and-when-should-i-use-it)。

0