Spring整体架构介绍
可以看到,Spring整体可大致分为5个部分,分别是Data Access/Integration、Web、AOP、Core Container、Test。下面分别对这5个部分进行简单的介绍;
1.Data Access/Integration(数据访问/集成)
该层封装了Spring的数据访问模块,包含了JDBC、ORM、OXM、JMS、Transaction等模块;
1.1 JDBC
JDBC模块提供了一个JDBC的抽象层,使得用Spring连接数据库时,开发人员避免书写冗长的jdbc获取连接、结果集解析等操作代码。
1.2 ORM
该模块主要提供流行的对象-关系映射的API,比如JPA、JDO、Hibernate、IBatis等;
JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强
————————————————
版权声明:本文为优快云博主「Java免试袁」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/J_A_V_A_Y_Y_D_S/article/details/122737962
iBatis就是myBatis前身,两者具有大量相似的api;
1.3 OXM
该模块提供了一个object到xml映射实现的抽象层,里面包括JAXB、Castor、XMLBeans、JiBX、XStream;
1.3.1 JAXB
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。
1.3.2 Castor
castor是一种将java对象和XML自动绑定的开源软件。它可以在java对象、XML文本、SQL数据表以及LDAP目录之间绑定。Castor几乎是JAXB的替代品。Castor是ExoLab Group下面的一个开放源代码的项目,它主要实现的是O/R映射功能。
轻型目录访问协议(英文:Lightweight Directory Access Protocol,缩写:LDAP,/ˈɛldæp/)是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。
LDAP的一个常用用途是单点登录;
1.3.3 XMLBeans
XMLBeans是一个XML-Java绑定工具,利用它可以很方便地解析XML文档;
1.3.4 JiBX
JiBX 是一个绑定 XML 数据到 Java 对象的框架。
1.3.5 XStream
XStream是Java类库,用来将对象序列化成XML (JSON)或反序列化为对象。
1.4 JMS
全称是Java Messaging Service,主要包含一些制造和消费消息的特性;
1.5 Transaction
主要提供编程和声明式的事务管理;
2 Web
为基于Web的应用程序提供上下文,里面包含了Web、Web-Servlet、Web-Struts和Web-Porlet模块;
2.1 Web
提供基础的面向Web的集成特性;
2.1.1 多文件上传
2.1.2 使用servlet-listeners初始化Ioc容器
2.1.3 提供一个面向Web的应用上下文
2.1.4 包含Spring远程支持的Web相关部分
2.2 Web-Servlet
包含Spring的MVC(Model-View-Controller)实现
2.3 Web-Struts
提供了对Struts的支持,但是在Spring3.0中已被弃用;
2.4 Web-Porlet
提供了Porlet环境和Web-Servlet模块的MVC实现;
Portlet是基于Java的Web组件,处理request并产生动态内容。Portlet产生的内容称为片段,即一段遵守中心规则的标记(比如HTML, XHTML,WML(无线标记语言)),多个片段可以聚合成一个完整的文档。多个Portlet聚合在一起,组成Portal页。Portlet容器控制Portlet的生命周期。
3 AOP
提供面向切面编程的实现,通过使用Spring AOP,可以在不用依赖EJB组件的前提下,将声明性的事务管理集成到应用程序中;
主要有Aspects和Instrumentation模块;
3.1 Aspects
该模块提供了对AspectJ的实现;
AspectJ是一个面向切面的框架,它扩展了Java语言。AspectJ定义了AOP语法,它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。
3.2 Instrumentation
提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用
4 Core Container
核心容器模块包含Core、Beans、Context、Expression Language子模块;
其中,Core和Beans是spring框架的基础,它们提供了IOC(控制反转)和DI(依赖注入);
spring创建bean主要依赖于BeanFactory,它提供了Factory模式的经典实现,用来消除对程序性单例模式的需要,并且允许开发人员在程序逻辑中分离出依赖关系和配置;
4.1 Core
包含Spring框架的基本核心工具类,其他依赖的组件都要用到这些核心工具类;
开发人员也可以在自己的程序中使用这些工具类;
4.2 Beans
访问配置文件;
创建和管理bean;
进行IOC操作相关的类;
4.3 Context
构构建于Core和Beans基础之上,提供了一种类似于JNDI注册器的框架式的对象访问方法;
继承了Beans的特性,为spring核心提供了大量的扩展,比如说国际化、事件传播、资源加载、对Context的透明创建的支持;
支持一些J2EE的特性,比如EJB、JMX、和基础的远程处理;
其中ApplicationContext接口是Context模块的关键;
4.4 Expression Language
提供了强大的表达式语言、比如JSP中的属性获取表达式等;
5 Test
该模块支持使用JUnit和TestNG对Spring组件进行测试;
5.1 JUnit
JUnit是一个Java语言的单元测试框架。
Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。
JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。
5.2 TestNG
TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便。
以上就是对Spring框架整体的简单介绍,欢迎有兴趣的小伙伴留言讨论!
参考书籍:《Spring5.0源码深度解析》