《Spring敲门砖之基础教程第一季》 第一章(2)解读Spring Framework
《Spring敲门砖之基础教程第一季》 第一章(2)解读Spring Framework
宋建国 发表于1年前
《Spring敲门砖之基础教程第一季》 第一章(2)解读Spring Framework
  • 发表于 1年前
  • 阅读 13
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

回顾        

上一节我们简单介绍了sping的一些基本概念以及它的一些特性,核心功能AOP,IOC等,这一节我们来聊聊spring框架的构成部件。

系统架构

        一个成功的项目离不开一个好的架构,一个好的架构自然需要一位好的设计师,  Rod Johnson正是Spring的前生总架构设计师,那么spring有哪些模块,我们看一下由spring官方给出的一张图就一目了然了。

图 1.1  Overview of the Spring Framework

        它总共包含了大约20个小的模块,这些小模块根据功能又划分成几个大模块,具有高内聚低耦合的特质,这些大模块依次分为Core Container(核心容器),Data Access/Integration(数据访问和集成), Web, AOP (面向方面编程), Instrumentation(设备基础设施), Messaging(报文解析), 测试模块, 功能涵盖了我们日常的所有开发。

解剖模块

  • Core Container:

        这一部分可以说是spring的心脏,它支撑着各个子模块的运行,Core包含了spring基础IOC和依赖注入,Beans是BeanFactory接口的具体实现,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正的允许你从程序逻辑中分离出依赖关系和配置,Context基于前面的两个模块集成于Beans特性,提供bean的使用和生命周期的管理,常用的接口如ApplicationContext就是来获取我们需要使用的Bean,SPEL是spring提供在容器里使用的表达式,类似JSP页面的EL,JSTL,但是它结合了Bean注入具有更加强大的功能如计算,动态加载,包括后面使用aop声明式事务管理等。

  • Data Access/Integration:

数据操作模块,这里包含封装了原始的JDBC基础模块,用于消除以往的冗余的数据库连接编码(隐约记得好像是5个固定代码来获取数据连接),它提供了JDBC的一个抽象层,提供了通用的数据库厂商代码;ORM模块是我们目前使用最普遍的一个模块,它提供了对象-关系映射API,即把传统的Bean对象映射为数据库对象,常见的有JPA、JDO、Hibernate、iBatis等框架。利用ORM封装包,可以混合使用所有Spring提供的特性进行O/R映射。如前边提到的简单声明性事物管理。OXM模块,该模块提供了一个对Object/XML映射实现的抽象层,Object/XML映射实现包括JAXB、Castor、XMLBeans、JiBX和XStream。JMS模块JMS(Java Messaging Service)是一个消息服务模块,它负责创建创建消息的消费者和生产者,依据JMS规范而产生的,类似的消息中间件还有ActiveMq,Kafka等。Transaction模块用于支持编程和声明性的事物管理,这些事物类必须实现特定的接口,并且对所有的POJO都适用。

  •  Web:

 它包含了我们开发web项目的一些模块,web模块提供了基础的面向web的集成特性。例如多文件上传、使用servlet listeners初始化IoC容器以及一个面向web的应用上下文。它还包含Spring远程支持中web相关部分。Servlet也就是我们常用的spingMVC servlet模块,它提供了一个强大的前端mvc模式,用于web应用,支持restful web service的调用,相对于structs显得方便许多。WebSocket是用于server端同页面浏览器端通讯的一个重要工具,portlet则是spring提供的另一类mvc开发模式,它也是基于容器的,具体的实现方式不相同,感兴趣的同学可以去对比一下。

  • AOP和Instrumentation

    AOP模块提供了一个符合AOP联盟标准的面向切面编程的实现,它让你可以定义,例如方法拦截器和切点,从而将逻辑代码分开,降低它们之间的耦合性,抽取一些公共的东西出来,可以更好的代码复用。利用source-level的元数据功能,还可以将各种行为信息合并到你的代码中,这有点像.net中的attribute的概念 , Aspects模块提供了对AspectJ的集成支持。Instrumentation模块提供了class instrumentation支持和classloader实现,使得可以在特定的应用服务器上使用。Spring在JVM代理库spring-agent.jar中使用InstrumentationSavingAgent来保存由JVM提供的Instrumentation接口的当前实例。DefaultContextLoadTimeWeaver将会自动检测跟应用环境匹配得最好的LoadTimeWeaver实例。

  • Test

    Test测试模块支持使用JUnit和TestNG对Spring组件进行测试。我们平时运行需要加载spring环境容器的时候可以通过注解或者直接配置,将spring的配置文件加载到当前运行环境,就可以进行测试了。

模块目录:

下面列出了各功能模块所在的package,后面章节我们会根据实际的项目使用演示代码,并且解析原理。

GroupId ArtifactId Description

org.springframework

spring-aop

Proxy-based AOP support

org.springframework

spring-aspects

AspectJ based aspects

org.springframework

spring-beans

Beans support, including Groovy

org.springframework

spring-context

Application context runtime, including scheduling and remoting abstractions

org.springframework

spring-context-support

Support classes for integrating common third-party libraries into a Spring application context

org.springframework

spring-core

Core utilities, used by many other Spring modules

org.springframework

spring-expression

Spring Expression Language (SpEL)

org.springframework

spring-instrument

Instrumentation agent for JVM bootstrapping

org.springframework

spring-instrument-tomcat

Instrumentation agent for Tomcat

org.springframework

spring-jdbc

JDBC support package, including DataSource setup and JDBC access support

org.springframework

spring-jms

JMS support package, including helper classes to send and receive JMS messages

org.springframework

spring-messaging

Support for messaging architectures and protocols

org.springframework

spring-orm

Object/Relational Mapping, including JPA and Hibernate support

org.springframework

spring-oxm

Object/XML Mapping

org.springframework

spring-test

Support for unit testing and integration testing Spring components

org.springframework

spring-tx

Transaction infrastructure, including DAO support and JCA integration

org.springframework

spring-web

Web support packages, including client and web remoting

org.springframework

spring-webmvc

REST Web Services and model-view-controller implementation for web applications

org.springframework

spring-webmvc-portlet

MVC implementation to be used in a Portlet environment

org.springframework

spring-websocket

WebSocket and SockJS implementations, including STOMP support

 

总结

本节介绍spring framwork的系统架构组成,从大模块到小模块一一剖析了它的概念和使用场景,其中orm,web使我们常见的模块,然后给出了各个功能所处的package,这样我们用到什么功能就去哪个目录下查找,后面我们会一次展开功能的介绍并进行实践。

 

参考资料

http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#overview

http://blog.csdn.net/liou825/article/details/18700143

声明:

本文介绍纯属个人观点,如果不对的地方欢迎批评指正,让我们共同进步,朝着正确的方向前进。如果您喜欢本文请关注下面公众账号获取最新文章,您的支持是我前行的动力。

共有 人打赏支持
粉丝 14
博文 126
码字总数 10019
×
宋建国
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: