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
框架的核心功能有两个。
Spring
容器作为超级大工厂,负责创建、管理所有的Java
对象,这些Java
对象被称为Bean
Spring
容器管理容器中Bean
之间的依赖关系,Spring
使用一种被称为”依赖注入
“的方式来管理Bean
之间的依赖关系。
使用依赖注入,不仅可以为Bean
注入普通的属性值,还可以注入其他Bean
的引用。通过这种依赖注入, Java EE
应用中的各种组件不需要以硬编码方式耦合在一起,甚至无须使用工厂模式。当某个Java
实例需要其他Java
实例时,系统自动提供所需要的实例,无须程序显式获取。
依赖注入是一种优秀的解耦
方式。依赖注入让Spring
的Bean
以配置文件组织在一起,而不是以硬编码的方式耦合在一起。