引自:Spring 概述
1. 概述
- Spring 框架是一个开源的 Java 平台,Apache 2.0 许可(2003年)
- 轻量级的框架,其基础版本只有 2 MB 左右
- Spring 框架的目标是使 J2EE 开发变得更容易使用(POJO 编程模型----普通JavaBeans)
- EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序----简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行
2. 优势
- Spring :只使用 POJOs 的好处是你不需要一个 EJB 容器产品,比如一个应用程序服务器,但是你可以选择使用一个健壮的 servlet 容器(如 Tomcat )
- Spring利用了现有的技术,像ORM 框架、日志框架、JEE、Quartz 和 JDK 计时器,其他视图技术
- 测试一个用 Spring 编写的应用程序很容易(环境相关的代码被移动到这个框架中)
- 通过使用 JavaBean-style POJOs,它在使用依赖注入注入测试数据时变得更容易
- Spring 的 web 框架是一个设计良好的 web MVC 框架
- Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低
- 轻量级的 IOC 容器(与 EJB 容器相比更轻量),有利于在内存和 CPU 资源有限的计算机上开发和部署
- Spring提供了一致的事务管理接口,可向下扩展到(使用一个单一的数据库,例如)本地事务并扩展到全局事务(例如,使用 JTA)
3. 依赖注入(DI)
- Spring采用了控制反转(IoC)的依赖注入(DI)模式
- 依赖注入仅仅是控制反转的一个具体的例子
- 依赖关系部分转化为两个类之间的关联。例如,类 A 依赖于类 B
- 注入:所有这一切都意味着类 B 将通过 IoC 被注入到类 A 中
- 依赖注入可以以向构造函数传递参数的方式发生,或者通过使用 setter 方法 post-construction
- 依赖注入是 Spring 框架的核心部分
- 依赖注入帮助你将你的应用程序对象从彼此中分离出来
4. 面向方面的程序设计(AOP):
- Spring 框架的一个关键组件是面向方面的程序设计(AOP)框架
- 一个程序中跨越多个点的功能被称为横切关注点----在概念上独立于应用程序的业务逻辑(如日志记录、声明性事务、安全性,和缓存等)
- 在OOP 中模块化的关键单元是类,而在 AOP 中模块化的关键单元是方面
- AOP将横切关注点从它们所影响的对象中分离出来
- Spring 框架的 AOP 模块提供了面向方面的程序设计实现,可以定义诸如方法拦截器和切入点等,从而使实现功能的代码彻底的解耦出来