Spring是什么?
Spring是一个开源框架,由Rod Johnson创建,他在Expert One-on-One:J2EE Design and Development 这本书中阐述过这个框架。在该书中Spring被称为“接口21”
注意: 为了避免歧义,我们使用“EJB”来代表Enterprise JavaBean。当我们说原始的JavaBean时,我们使用“JavaBean”或简称为“Bean”,其他的一些在书中使用的名词有POJO(Plain Old Java Object)或POJI(Plain Old Java Interface)。 |
Spring 是为了简化企业级系统开发诞生的。开发Spring应用程序使用的都是JavaBeans,简化了测试,实现按接口(interface)编程,实现对象松耦合。
Spring 框架的两个核心概念:IoC 和 AOP
IoC:Inverstion of Control 译为:反向控制 或者称为 依赖注入(Dependency Injection)
AOP:Aspect-Oriented Programming 译为:面向切面编程
为了深入了解Spring,让我们把这个描述分解开来。
- 轻量级--从大小和系统开支上说Spring都算是轻量级的。整个Spring框架可以打成一个1MB多一点的JAR包,并且Spring的处理开支也非常小。更重要的是,Spring是非侵入式的:基于Spring开发的系统中的对象一般不依赖于Spring的类。
- 反向控制--Spring提倡使用反向控制(IoC)来实现松耦合。使用IoC,对象是被动接收依赖类而不是主动去找。你可以将IoC理解为JNDI的反转--对象不是从容器中查找它的依赖类,而是容器在实例化对象的时候主动将它的依赖类注入给它。
- 面向切面--Spring对面向切面编程提供了强大的支持,通过将业务逻辑从系统服务(如监控和事务管理)中分离出来,实现了内聚开发。系统对象只做它们该做的--业务逻辑,它们不负责(或关心)其他系统问题(如日志和事务支持)。
- 容器--Spring是一个容器,是因为它包含并且管理系统对象的生命周期和配置。你可以通过配置来设定你的Bean是单一实例,还是每次请求产生一个实例,并且设定它们之间的关联关系。Spring有别于传统的重量级EJB容器,这些容器通常很大,很笨重。
- 框架--Spring实现了使用简单的组件配置组合成个复杂的系统。在Spring中,系统中的对象是通过XML文件配置组合起来的。并且Spring提供了很多基础功能(事务管理、持久层集成等),这使开发人员能够专注于开发应用逻辑。
Spring模块
- 核心容器和支持工具
- Application Context(上下文)模块
- Spring的AOP模块
- JDBC抽象及DAO模块
- O/R映射集成模块
- Web模块(Web Context和Utility模块)
- SpringMVC框架
使用接口解耦合
减少耦合的一个通常的做法是将具体实现隐藏在接口下面,这样具体实现类的替换不会影响到引用类。
创建系统组件之间关联的动作叫做装配。