前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Spring敲门砖之基础教程第一季》 第一章(2)解读Spring Framework

《Spring敲门砖之基础教程第一季》 第一章(2)解读Spring Framework

作者头像
用户1257215
发布2018-01-30 10:59:54
7080
发布2018-01-30 10:59:54
举报
文章被收录于专栏:架构师之旅

系统架构

一个成功的项目离不开一个好的架构,一个好的架构自然需要一位好的设计师, 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

声明:

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构师之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解剖模块
  • 模块目录
  • 总结
  • 参考资料
  • 声明:
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档