第一章:Spring 整体架构和环境搭建--1.1整体架构

           Spring 表示是一个开源框架,是为了解决企业应用程序开发复杂性由Rod Johnson创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
    Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

   它为企业应用的开发提供一个轻量级的解决方案,该解决方案的包括:基于依赖注入的核心机制,基于AOP 的声明式事务管理,与多种持久层技术的无缝整合,以及优秀的Web MVC 框架等,Sping致力于Java EE 应用各层的解决方案,而不仅仅关注于某一层的方案,Spring 贯穿于表现层、业务层、持久层。然而Spring 并非是其他的框架的取代品,而是以高度的开发性与它们无缝整合。


       1.1 Spring 的整体架构

              

1.SpringloC:包含了最为基本的IoC容器BeanFactory的接口与实现,也就是说,在这个Spring的核心包中,不仅定义了IoC容器的最基本接口(BeanFactory),也提供了一系列这个接口的实现,如XmlBeanFactory就是一个最基本的BeanFactory (IoC容器),从名字上可以看到,它能够支持通过XML文件配置的Bean定义信息。除此之外,SpringIoC容器还提供了一个容器系列,如SimpleJndiBeanFactory、 StaticLismbleBeanFactor等。我们知道,单纯一个IoC容器对于应用开发来说是不够的.为了让应用更方便地使用IoC容器 ,还需要在IoC容器的外围提供其他的支持 ,这些支持包括Resource访问资源的抽象和定位等 ,所有的这些 ,都是这个Spring IoC模块的基本内容。另外,在BeanFactory接口实现中,除了前面介绍的像BeanFactory那样最为基本的容器形态之夕外,Spring还设计了IoC容器的髙级形态ApplicaticmContext应用上下文供用户使用,这些ApplicationConlext应用上下文 ,如FileSystemXmlApplicationContext,ClassPathXmlAppIicationContext,对应用来说, 是IoC容器中更面向框架的使用方式,同样,为了便于应用开发,像国际化的消息源和应用支持事件这些特性,也都在这个
模块中配合IoC容器来实现,这些功能围绕着IoC基本容器和应用上下文的实现,构成了整个Spring IoC模块设计的主要内容。

2.SpringAOP这也是Spring的核心模块, 围绕着AOP的增强功能,Spring集成了AspectJ作为AOP的一个特定实现,同时还在JVM动态代理/CGLIB的基础上, 实现了—个AOP框架 ,作为Spring集成其他模块的工具,如TransactionProxyFactoryBean
声明式事务处理,就是通过AOP集成到Spring中的。在这个模块中,Spring AOP实现了一个完整的建立AOP代理对象,实现AOP拦截器,直至实现各种Advice通知的过程。在对这个模块的分析中可以看到,AOP模块的完整实现是我们熟悉AOP实现技术的一
个不可多得的样本。

3.Spring MVC:对于大多数企业应用而言, Web应用已经是一种普遍的软件发布方式,而在Web应用的设计中, MVC模式已经被广泛使用了。 在java 社区中,也有很多类 似的 MVC 框架可以选择 而且这 些框架往往和 Web UI 计整合 在一起 对于 定位于提供整体平台解决方案的 Spring, 样的整合也是 不可缺少的。 Spring  MVC模块 DispatcherServlet 为核心 实现了 MVC 模式 ,包括 怎样与 Web 容器环境的 集成, Web 请求 的拦裁 .分发 、处 理和ModelAndView 数据的返回 ,以及 如何集成各种UI 视图展 现和数 据表现 ,如PDF,Excel , 通过这 个模块,可 以完成 Web 的前端 设计。

4.Spring JDBC/SpringORM:对于关系数据库的处理, Java提供了JDBC来进行操作,但在实际的应用中,单纯使用JDBC的方式还是有些繁琐, 所以在JDBC规范的基础上,Spring对JDBC做了一层封装,使通过JDBC完成的对数据库的操作更加简洁, SpringJDBC包提供了JdbcTemplale作为模板类 ,封装了基本的数据库操作方法,如数据的査询、更新等,另外, SpringJDBC还提供了RDBMS的操作对象,这些操作对象可以使应用以更面向对象的方法来使用JDBC, 比如可以使用MappingSqlQuery将数据库数据记录直接映射到对象集合,类似个极为简单的ORM 工具。
除了通过SpringJDBC对数据库进行操作外,Spring还提供了许多对ORM工具的封装, 这些封装包括了常用的ORM工具,如Hibernate iBatis等,这一层封装的作用是让应用更方便地使用这些ORM 工具,而不是替代这些ORM工具,比如可以把对这些工具的使用和Spring提供的声明式事务处理结合起来。同时, Spring还提供了许多模板对象,如HibernateTemaplate这样的工具来实现对Hibernate的驱动,这些模板对象往往包装使用Hibernate的一些通用过程,比如Session的获取和关闭、事务处理的关联等,从而把一些通用的恃性实现抽象到Spring中来,更充分地体现了Spring的平台作用。

5.Spring事务处理:Spring事务处理是一个通过Spring AOP实现自身功能增强的典型模块。在这个模块中, Spring把在企业应用开发中事务处理的主要过程抽象出来。这个声明式事务处理的实现,使开发人员只需要在IoC容器中对事务属性进行配置即可完成,同时, 这些事务处理的基本过程和具体的事务处理器实现是无关的,也就是说,应用可以选择不同的具体的事务处理机制,如JTA,JDBC, Hibernate等。 因为使用了声明式事务处理.具体的事务处理机制被纳入Spring事务处理的统一框架中完成 , 并完成与具体业务代码的解耦。 在这个模块中,可以看到一个通用的实现声明式事务处理的基本过程,比如怎样配置事务处理的拦截器,怎样读人事务配置属性, 并结合这些事务配置属性对事务对象进行处理,包栝事务的创建、挂起、提交、回滚等基本过程, 还可以看到具体的事务处理器(DataSourceTransaction Man ag e
Hi be rn ateTransact ionM a n ag er JtaTransactionManager等) 是怎样封装不同的 事务处理机制 (JDBC、 Hibernate, JTA等) 的。

6.Spring远端调用:Spring为应用带来的一个好处就是能够将应用解耦。应用解耦,一方面可以降低设计的复杂性,一方面,可以在解耦以后将应用模块分布式地部署,从而提髙系统整体的性能。 在后一种应用场景下, 会用到Spring的远端调用, 这种远
端调用是通过Spring的封装从Spring应用到Spring应用之间的端到端调用,在这个过程中,通过Spring的封装, 为应用屏蔽了各种通信和调用细节的实现
,同时. 通过这一层的封装 ,使应用可以通过选择各种不同的远端调用来实现, 比如可以使用HTTP
调用器(以HTTP协议为基础的), 可以使用第三方的二进制通信实现Hessian/Burlap甚至还封装了传统Java技术中的RMI调用。

7.Spring应用。

小结:在我们平时的开发中,用到最多的场景就是使用SSH框架来完成企业应用的开发,取代传统的EJB笨重的开发模式。在SSH架构中 Struts作为Web UI层、 Spring作为中间件平台, Hibernate作为数据持久化工具(ORM工具) 来操作关系数据库。在这个架构中, Hibernate是一个独立的ORM数据持久化产品。比较Spring JDBC和Hibernae对数据库操作的支持,对Spring来说,其对数据持
久化的支持,虽然也有JDBC的封装,可以完成一些将简单的数据记录到Java数据对象的转换和映射工作,但和Hibernate相比, 功能上毕竞还是有一些单薄,比如Hibernate还提供了各种数据的査询、方便的对象和关系数据的映射等。因此,在大多数应用中,将Hibernate和Spring—起使用是非常普遍的,因为一方面Hibenate提供了完整的和已经成为事实标准的功能,另一方面, Spring也提供了与Hibernated的集成和封装,包括声明式事务处理的封装等。对于Web 层而言,尽管Spring提供了自己的MVC实现,但与Struts的流行程度相比,这个Spring MVC的使用并不广泛, 毕竟在Web开发领域, Struts成名更早在这个架构组合中,Spring起到的是一个应用平台的作用,通过Spring的集成,可以让应用在直接部署在Tomcat这个Web服务器上 ,因为作为一个直接依赖JVM的轻量级框架, Spring的部署方式就是一个简单的jar包, 不需要以一个J2EE应用服务器的形式出现,从而使整个应用在Tomcat这样的Web服务器上直接运行起来,非常简洁。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值