1、 属性介绍
l 轻量级
相对于一些重量级容器(如 EJB 容器)来说的, spring 的核心包文件再文件容量上只有不到 1M 的大小,使用 spring 的核心包所需要的资源也是很少的,您甚至可以在小型设备中使用 spring
l 非侵入性
就是让应用程序感受不到框架的存在,简单说来就是使用 spring ,应用程序中的某些组件可以直接拿到另一个应用程序或者框架中使用。
l 容器
容器可以管理对象的生成、资源取得、销毁等生命周期,甚至建立对象与对象之间的依赖关系。 Spring 就是通过读取一个配置文件来建立一个容器,确定对象的产生以及对象之间的依赖关系。
l
IOC ( Inversion of Control ,反转控制) ,DI ( Dependency Injection ,依赖注入)
spring 最重要的核心概念是 Inversion of Control ,中文常译为“控制反转”,简称 IoC 。在 spring 中,“依赖关系的转移”、“依赖于抽象而非实践”是重要的概念,从对象的角度来说,可以避免对象之间的耦合;从容器的角度来说,可以避免应用程序因为依赖于容器的功能,而从容器脱离。
Spring 另一个重要的核心概念为 Dependency Injection ,中文常译为“依赖注入”,简称 DI 。使用 spring ,不必自己在程序代码中维护对象的依赖关系,只需要在配置文件中加以设置, spring 核心容器回自动根据配置,将依赖注入指定的对象。
总结说来 IOC (控制反转)就是控制权限的转移由应用程序转移到外部容器 。
DI (依赖注入)就是容器动态的将某种依赖关系注入到组件中。意义就是“保留抽象接口,让组件依赖于抽象接口,当组件要与其他实际的对象发生依赖关系的时候,让抽象接口来注入实际的对象”
操作:通过一个存储文件的例子来展示 IOC 思想。
依赖注入的三种方式:
Type2 Ioc :通过 setter 方式来注入( spring 鼓励我们使用这种方式注入)
Type3 Ioc :通过构造函数来注入(建立对象的时候就完成了注入)
Type1 Ioc :通过实现容器的方法来实现注入
l AOP ( Aspect-oriented-programming )
Spring 最被人重视的功能之一是支持 AOP 的实现,然后 AOP 框架只是 spring 支持的一个框架,说 spring 框架是 AOP 框架并不是一个适当的描述,人们对于 AOP 的关注反映在 spring 上,这使得人们对于 spring 的关注集中在它的 AOP 框架上,虽然有所误解,但是也突显了 spring 的另一个令人关注的特色。
Spring 容器给我们的实现意义是: Don’t call me , I’ ll call you (不要调用容器,容器会给您所想要的对象)
不论spring的哪个版本这些都是它赖以生存的基础