Spring3开发实战 之 第一章:Spring入门

 

认识Spring

Spring是什么

Spring是一种轻量级的、非侵入式的Java/JavaEE应用框架    

Spring背景

Rod Johnson

《Expert One-on-One J2EE Design and Development》(2002)这本书的中文译本为《J2EE 设计开发编程指南》(2003)
半年后,一个新的Java Framework发布,同样出自Rod Johnson 的手笔,这自然引起了大家极大的兴趣,这就是SpringFramework。SpringFramework 实际上是《Expert One-on-One J2EE Design and Development》 一书中所阐述的设计思想的具体实现。
 
 《Expert One-on-One J2EE Development without EJB》 (2004)
nSpring目标
让J2EE开发变的简单、易用     (框架的好处)
业务应用“不”依靠 Spring API (非侵入性)
集成已存在的成熟应用解决方案 (如Hibernate,不重复发明*)
利用面向对象的优秀技术       (面向接口而非实现编程,组合优于继承)
促进好的编程习惯             (测试驱动开发,测试简单,面向接口编程)
让测试业务应用变得简单、快速 (无侵入性,测试容易)

Spring优点

有效地组织你的中间层对象
消除各式各样的配置文件
将面对接口编程做到实处
*、不依赖框架
将单元测试变的简单
统一的数据存储方式
只选择你需要的

Spring能干什么

Spring能干什么

笼统说:Spring能作为一个超级的”粘合”平台,把很多的技术有效整合到一
起,形成一个整体,以更好的解决问题,并使系统结构更优良、性能更出众。
(体现体系结构设计的:组件式、装配式、插拔式、复用性、无侵入式等)
具体点说,Spring能干的事情很多,最基本的有以下几条:
1:IoC/DI
2:AOP
3:对JDBC和ORM的支持
4:服务(典型如:事务)
5:各种技术的整合(典型如:Struts2+Spring3+Hibernate3整合,还有很多其他的技术整合,如EJB、JMS等)
6:Web应用框架(SpringMVC)
7:更多技术,如:Spring的Security、Spring的Web Flow、Spring的WebService等等
 

Spring有什么

Spring3开发实战 之 第一章:Spring入门


上图是Spring框架2.5版时官方给出的概述图

Core包

Core封装包是框架的最基础部分,提供IoC和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。
构建于Core封装包基础上的 Context封装包,提供了一种框架式的对象访问方法,有些象JNDI注册器。Context封装包的特性得自于Beans封装包,并添加了对国际化(I18N)的支持(例如资源绑定),事件传播,资源装载的方式和Context的透明创建,比如说通过Servlet容器。

DAO包

DAO提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。还提供了一种比编程性更好的声明性 事务管理方法,不仅仅是实现了特定接口,而且对所有的POJOs(plain old Java objects)都适用。

ORM包

ORM 封装包提供了常用的“对象/关系”映射APIs的集成层。 其中包括JPA、JDO、Hibernate 和 iBatis 。利用ORM封装包,可以混合使用所有Spring提供的特性进行“对象/关系”映射,如前边提到的简单声明性 事务管理。

AOP包

Spring的 AOP 封装包提供了符合 AOP 联盟规范的面向方面的编程实现,让你可以定义如方法拦截器和切入点,从逻辑上讲,可以减弱代码的功能耦合,清晰的被分离开。而且,利用源码级的元数据功能,还可以将各种行为信息合并到你的代码中 。

Web包

Spring中的Web包提供了基础的针对Web开发的集成特性,例如多方文件上传,利用Servlet listeners进行IoC容器初始化和针对Web的application context。这个包使Spring可与其他框架结合。

MVC包

Spring中的 MVC 封装包提供了Web应用的MVC实现。Spring的MVC框架并不是仅仅提供一种传统的实现,它提供了一种清晰的分离模型,在领域模型代码和web form之间。并且,还可以借助Spring框架的其他特性。
Spring3开发实战 之 第一章:Spring入门

Spring3总共包含了大约20个模块,这些模块又被组织成为:

核心容器部分、数据访问/集成部分、Web部分、AOP部分和测试支持几个部分。

核心容器部分(Core Container)又包含如下部分

1:Core和Beans模块提供了Spring最基础的功能,提供IoC和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。
2:Context模块基于Core和Beans来构建,它提供了用一种框架风格的方式来访问对象,有些像JNDI注册表。Context封装包继承了beans包的功能,还增加了国际化(I18N),事件传播,资源装载,以及透明创建上下文,例如通过servlet容器,以及对大量JavaEE特性的支持,如EJB、JMX。核心接口是ApplicationContext。
3:Expression Language,表达式语言模块,提供了在运行期间查询和操作对象图的强大能力。支持访问和修改属性值,方法调用,支持访问及修改数组、容器和索引器,命名变量,支持算数和逻辑运算,支持从Spring 容器获取Bean,它也支持列表投影、选择和一般的列表聚合等。

数据访问/集成部分(Data Access/Integration)又包含如下部分

1:JDBC模块,提供对JDBC的抽象,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。
2:ORM模块,提供了常用的“对象/关系”映射APIs的集成层。 其中包括JPA、JDO、Hibernate 和 iBatis 。利用ORM封装包,可以混合使用所有Spring提供的特性进行“对象/关系”映射,如简单声明性 事务管理 。
3:OXM模块,提供一个支持Object和XML进行映射的抽象层,其中包括JAXB、Castor、XMLBeans、JiBX和XStream。
4:JMS模块,提供一套“消息生产者、消费者”模板用于更加简单的使用JMS,JMS用于用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
5:Transaction模块,支持程序通过简单声明性 事务管理,只要是Spring管理对象都能得到Spring管理事务的好处,即使是POJO,也可以为他们提供事务。

Web部分又包含如下部分

1:Web模块,提供了基础的web功能。例如多文件上传、集成IoC容器、远程过程访问、以及Web Service支持,并提供一个RestTemplate类来提供方便的Restful services访问
2:Web-Servlet模块,提供了Web应用的Model-View-Controller(MVC)实现。Spring MVC框架提供了基于注解的请求资源注入、更简单的数据绑定、数据验证等及一套非常易用的JSP标签,完全无缝与Spring其他技术协作。
3:Web-Struts模块, 提供了对Struts集成的支持,这个功能在Spring3.0里面已经不推荐了,建议你迁移应用到使用Struts2.0或Spring的MVC。
4:Web-Portlet模块,提供了在Portlet环境下的MVC实现
 

AOP部分又包含如下部分

1:AOP模块,提供了符合AOP 联盟规范的面向方面的编程实现,让你可以定义如方法拦截器和切入点,从逻辑上讲,可以减弱代码的功能耦合,清晰的被分离开。而且,利用源码级的元数据功能,还可以将各种行为信息合并到你的代码中 。
2:Aspects模块,提供了对AspectJ的集成。
3:Instrumentation模块, 提供一些类级的工具支持和ClassLoader级的实现,可以在一些特定的应用服务器中使用
 

Test部分又包含如下部分

1:Test模块,提供对使用JUnit和TestNG来测试Spring组件的支持,它提供一致的ApplicationContexts并缓存这些上下文,它还能提供一些mock对象,使得你可以独立的测试代码。
Spring3开发实战 之 第一章:Spring入门 
 
视频配套PPT,视频地址【 Spring3开发实战-独家视频课程
 原创内容 转自请注明【http://sishuok.com/forum/blogPost/list/2826.html#7825