Spring通过依赖注入模式,将依赖关系从编码中脱离出来,
从而大大降低了组件之间的耦合,实现了组件真正意义上的即插即用
Spring对于面向接口设计的意义,在于它为面向接口编程提供了一个更加自然的平台
通过对编码中常见问题的分解和抽象,Spring提供了一套成熟而全面的基础框架
Spring是一个从实际项目开发经验中抽取的,可高度重用的应用框架
Spring涵盖了应用系统开发所涉及的大多数技术范畴,包括MVC、ORM以及Remote Interface等
Spring并非一个强制性框架,它提供了很多独立的组件可供选择
Spring 从核心而言,是一个DI 容器,其设计哲学是提供一种无侵入式的高扩展性框架
作为对比,EJB则是一种高度侵入性的框架规范,它制定了众多的接口和编码规范,要求实现者必须遵从
所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转
所谓依赖注入,即组件之间的依赖关系由容器在运行期决定
在运行时(系统开机,USB 设备加载)由容器(运行在笔记本中的Windows操作系统)
将依赖关系(笔记本依赖USB设备进行数据存取)注入到组件中(Windows文件访问组件)
依赖注入的目标并非为软件系统带来更多的功能,
而是为了提升组件重用的概率,并为系统搭建一个灵活、可扩展的平台
接口注入 设值注入 构造子注入
通过BeanWrapper,我们可以无需在编码时就指定JavaBean的实现类和属性值,
通过在配置文件加以设定,就可以在运行期动态创建对象并设定其属性(依赖关系)
BeanWrapper实现了针对单个Bean的属性设定操作
而BeanFactory则是针对多个Bean的管理容器,根据给定的配置文件,
BeanFactory从中读取类名、属性名/值,然后通过Reflection机制进行Bean加载和属性设定
<bean
id="TheAction" ⑴
class="net.xiaxin.spring.qs.UpperAction" ⑵
singleton="true" ⑶
init-method="init" ⑷
destroy-method="cleanup" ⑸
depends-on="ActionManager" ⑹
<value></value>代表一个空字符串,如果需要将属性值设定为null,必须使用<null/>节点
ApplicationContext覆盖了BeanFactory的所有功能,并提供了更多的特性
ResourceBundleMessageSource和ReloadableResourceBundleMessageSource,
后者提供了无需重启即可重新加载配置信息的特性