7.3 Spring的核心机制 依赖注入

7.3 Spring的核心机制 依赖注入

正如在前面代码中所看到的,程序代码并没有主动为Person对象的axe成员变量设置值,但执行Person对象的usxAxe()方法时, useAxe()方法完全可以正常访问到Axe对象,并可以调用Axe对象的chop()方法。
由此可见, Person对象的axe成员变量并不是程序主动设置的,而是由Spring容器负责设置的:

  • 开发者主要为axe成员变量提供一个setter方法,
  • 并通过<property>元素驱动Spring容器调用该setter方法为Person对象的axe成员变量设置值。

什么是依赖

纵观所有的Java应用(从基于Applet的小应用到多层结构的企业级应用),这些应用中大量存在A对象需要调用B对象方法的情形,这种情形被Spring称为依赖,即A对象依赖B对象。对于Java应用而言,它们总是由一些互相调用的对象构成的, Spring把这种互相调用的关系称为依赖关系。假如A组件调用了B组件的方法,即可称A组件依赖B组件
Spring框架的核心功能有两个。

  1. Spring容器作为超级大工厂,负责创建、管理所有的Java对象,这些Java对象被称为Bean
  2. Spring容器管理容器中Bean之间的依赖关系, Spring使用一种被称为”依赖注入“的方式来管理Bean之间的依赖关系。

使用依赖注入,不仅可以为Bean注入普通的属性值,还可以注入其他Bean的引用。通过这种依赖注入, Java EE应用中的各种组件不需要以硬编码方式耦合在一起,甚至无须使用工厂模式。当某个Java实例需要其他Java实例时,系统自动提供所需要的实例,无须程序显式获取。

依赖注入是一种优秀的解耦方式。依赖注入让SpringBean以配置文件组织在一起,而不是以硬编码的方式耦合在一起。