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有什么
上图是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总共包含了大约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对象,使得你可以独立的测试代码。
作者:jinnianshilongnian
补充:软件开发 , Java ,