Spring 简介
Spring解决目标:
1. 好的设计弥补好的技术
EJB是一个非常好的技术,解决了一直困扰软件人员的分布式计算、事务、安全等复杂公共的问题。可是当应用对这些要求不是很高或根本不需要时,采用EJB技术将是一种浪费,而且不自然,太庞大。减少这个不自然的庞大,就迫切需要
2. 通过接口对JavaBean实现解耦
在EJB中,所有的业务Bean都必须依赖EJB的特殊接口,Home,Remote和Bean接口。这种方式太依赖了,不方便管理移植和调试。
Spring通过自定义接口跟具体实现的Bean进行关联,不依赖特殊的接口,从而容易维护和测试,而且Spring容器还自己管理各个Bean之间的依赖关系,达到了Bean和Bean之间的更大的解耦。
3. 简便代码的测试
EJB需要基于容器进行测试,Spring不用
Spring的定义
1. 是一个开源框架
2. 简单、可测试、松耦合
3. 小,轻量级:包小
4. 非侵入式框架
5. 反向控制:通过反向控制,实现容器在实例化对象的时候,将它的依赖类注入,减少耦合
6. 面向切面
7. 是一个容器:容器管理所有bean的生命周期,管理bean之间的依赖以及事务等等
8. 框架:Spring提供了很多基本功能的实现,比如事务管理和持久化,用户只要开放自己的业务逻辑。而且还提供了同其它框架集成的接口,比如Struts、Hibernate等
Spring模块结构
1. Spring模块图
2. 核心模块(Core Container and Supporting Utilities)
提供Spring所有功能的基础,用工厂模式的方式,实现Ioc,用配置文件将对系统的配置和Bean与Bean直接的依赖关系从代码中独立出了,让Spring容器进行管理。
一句话,就是通过配置文件对Bean和Bean之间的关系进行描述,方便Spring对Bean以及Bean与Bean之间的关系进行装载管理,形成Spring容器。
3. 上下文模块(Application Context Module)
核心模块是容器,是基础,上下文模块是功能的扩展。
上下文模块在Spring容器的基础上,添加了语言国际化、系统生命周期事件以及验证等功能,同时还提供了邮件、JNDI、EJB集成、远程调用、定时等企业级服务以及与第三方框架的集成
4. AOP模块
通过AOP模块,Spring对面向方面编程提供了丰富的支持
5. JDBC和DAO模块
抽象出用户使用JDBC、DAO连接数据库的代码,方便开放调试以及跨数据库
6. O/R映射集成模块
Spring没有自己实现OR映射的功能,它提供了集成其它产品的接口。比如Hibernate、JDO等
7. Web模块(Web Context and Utility Module)
在Application Context的基础上,提供了适合Web系统的上下文支持。同时,还提供了集成Struts等其它框架的支持
8. MVC框架(MVC Framework)
Spring除了可以与其它Web框架进行集成外,自己也基于MVC模式,提供了一套web开放框架
Spring的应用场景
1. Spring Web应用
2. 使用第三方框架应用
3. 远程调用