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