本期带来就是spring系列的第二篇文章,大数据开发基础之spring框架,该篇文章就主要讲了spring的框架结构,以及几个核心点,帮助大家梳理了spring框架的构成,以此来达到对spring的更好理解。
一、Spring框架的总体架构图
Spring框架采用分层架构,根据不同的功能被划分成了多个模块,总共大约有20个模块,由多个不同的文件构成。被分别整合在核心容器(CoreContainer)、AOP(AspectOrientedProgramming)和设备支持(Instrmentation)、数据访问及集成(DataAccess/Integeration)、Web、报文发送(Messaging)、Test,6个模块集合中。如上图所示。该图包含了Spring框架的所有模块,这些模块可以满足一切企业级应用开发的需求,在开发过程中可以根据需求有选择性地使用所需要的模块。
(1)DataAccess/Integration(数据访问/集成)
数据访问/集成层包括JDBC、ORM、OXM、JMS和Transactions模块,具体介绍如下。
JDBC模块:提供了一个JDBC的抽象层,大幅度减少了在开发过程中对数据库操作的编码。
ORM模块:对流行的对象关系映射API,包括JPA、JDO、Hibernate和iBatis提供了的集成层。
OXM模块:提供了一个支持对象/XML映射的抽象层实现,如JAXB、Castor、XMLBeans、JiBX和XStream。
JMS模块:指Java消息服务,包含的功能为生产和消费的信息。
Transactions事务模块:支持编程和声明式事务管理实现特殊接口类,并为所有的POJO。
(2)Web模块
Spring的Web层包括Web、Servlet、Struts和Portlet组件,具体介绍如下。
Web模块:提供了基本的Web开发集成特性,例如多文件上传功能、使用的Servlet监听器的IoC容器初始化以及Web应用上下文。
Servlet模块:包括Spring模型—视图—控制器(MVC)实现Web应用程序。
Struts模块:包含支持类内的Spring应用程序,集成了经典的StrutsWeb层。
Portlet模块:提供了在Portlet环境中使用MVC实现,类似Web-Servlet模块的功能。
(3)CoreContainer(核心容器)
Spring的核心容器是其他模块建立的基础,由Beans模块、Core核心模块、Context上下文模块和ExpressionLanguage表达式语言模块组成,具体介绍如下。
Beans模块:提供了BeanFactory,是工厂模式的经典实现,Spring将管理对象称为Bean。
Core核心模块:提供了Spring框架的基本组成部分,包括IoC和DI功能。
Context上下文模块:建立在核心和Beans模块的基础之上,它是访问定义和配置任何对象的媒介。ApplicationContext接口是上下文模块的焦点。
ExpressionLanguage模块:是运行时查询和操作对象图的强大的表达式语言。
(4)其他模块
Spring的其他模块还有AOP、Aspects、Instrumentation以及Test模块,具体介绍如下。
AOP模块:提供了面向切面编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以降低耦合性。
Aspects模块:提供与AspectJ的集成,是一个功能强大且成熟的面向切面编程(AOP)框架。
Instrumentation模块:提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用。
Test模块:支持Spring组件,使用JUnit或TestNG框架的测试
二、bean
Spring框架中的核心组件只有三个:Core、Context和Beans。它们构建起了整个Spring的骨骼架构。没有它们就不可能有AOP、Web等上层的特性功能。其中三个核心中,最突出的就是bean了,Spring就是面向Bean的编程(BOP,BeanOrientedProgramming),Bean在Spring中才是真正的主角。
Bean在Spring中作用就像Object对OOP的意义一样,没有对象的概念就像没有面向对象编程,Spring中没有Bean也就没有Spring存在的意义。就像一次演出舞台都准备好了但是却没有演员一样。为什么要Bean这种角色Bean或者为何在Spring如此重要,这由Spring框架的设计目标决定,Spring为何如此流行,我们用Spring的原因是什么,想想你会发现原来Spring解决了一个非常关键的问题他可以让你把对象之间的依赖关系转而用配置文件来管理,也就是他的依赖注入机制。而这个注入关系在一个叫Ioc容器中管理,那Ioc容器中有又是什么就是被Bean包裹的对象。Spring正是通过把对象包装在Bean中而达到对这些对象管理以及一些列额外操作的目的。
它这种设计策略完全类似于Java实现OOP的设计理念,当然了Java本身的设计要比Spring复杂太多太多,但是都是构建一个数据结构,然后根据这个数据结构设计他的生存环境,并让它在这个环境中按照一定的规律在不停的运动,在它们的不停运动中设计一系列与环境或者与其他个体完成信息交换。这样想来回过头想想我们用到的其他框架都是大慨类似的设计理念。
三、Context和Core
Bean是Spring中关键因素,Context则是场景的提供,Core是一种道具手段。
Context在Spring的org.springframework.context包下,实际上就是给Spring提供一个运行时的环境,用以保存各个对象的状态。
Core组件作为Spring的核心组件,他其中包含了很多的关键类,其中一个重要组成部分就是定义了资源的访问方式。
我们知道Bean包装的是Object,而Object必然有数据,如何给这些数据提供生存环境就是Context要解决的问题,对Context来说他就是要发现每个Bean之间的关系,为它们建立这种关系并且要维护好这种关系。所以Context就是一个Bean关系的集合,这个关系集合又叫Ioc容器,一旦建立起这个Ioc容器后Spring就可以为你工作了。其实Core就是发现、建立和维护每个Bean之间的关系所需要的一些列的工具,从这个角度看来,Core这个组件叫Util更容易理解。
以上就是大数据开发基础之spring框架的所有内容了,希望大家看完本篇文章会对spring框架有个大概印象,对以后学习到spring有所帮助。
希望大家点个