Spring 整体架构和环境搭建

Spring是一个轻量级的Java开源框架,提供了IoC和AOP特性。本文详细介绍了Spring框架的整体架构,包括核心容器、AOP、数据访问/集成、Web、测试等模块。并指导如何搭建开发环境。

Spring的整体框架

Q:Spring是什么?
是一个轻量级的 Java 开源框架。是一个 IOC(DI)和 AOP 容器框架。

Spring 整体架构图

这里写图片描述

这些模块被总结为以下几个部分。
(1)Core Container(核心容器)
其中包含有:spring-corespring-beansspring-contextspring-context-supportspring-expression(Spring Expression Language) 模块。
spring-corespring-beans 模块是框架的基础部分,提供 IoC(转控制)依赖注入特性。这里的基础概念是 BeanFactory , 它提供对 Factory 模式的经典实现消除对程序性单列模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置

  • spring-core 模块:主要包含Spring 框架基本的核心工具类,是其他组件的基本核心
  • spring-beans 模块:包含访问配置文件创建和管理 bean 以及进行 Inversion of Control / Dependency Injection(IoC / DI)操作相关的所有类
  • Context(spring-context) 模块:构建于 CoreBeans 模块基础之上,提供了一种类似于 JNDI 注册器的框架式的对象访问方式。Context 模块继承了 Beans 的特性,为 Spring 核心提供了大量扩展,添加了对国际化(例如资源绑定)事件传播资源加载对 Context 的透明创建的支持。Context 模块同时也支持 J2EE 的一些特性,例如 EJBJMX基础的远程处理ApplicationContext 接口是 Context 模块的关键
  • spring-context-support 模块:为将公共第三方库集成到Spring应用程序上下文提供支持,特别是用于缓存(EhCache、JCache)和调度(CommonJ、Quartz)。
  • spring-expression 模块:提供了一个强大的表达式语言用于在运行时查询操纵对象。 该语言支持:设置/获取属性的值容器和索引器逻辑和算术运算符命名变量以及从 Spring 的 IoC 容器中根据名称检索对象list 投影选择和一般的 list 聚合

(2)AOP and Instrumentation
AOP 模块提供了一个符合 AOP 联盟标准的面向切面编程的实现,它让你可以定义例如方法拦截器和切点,从而将逻辑代码分开,降低它们之间的耦合性

  • spring-aspects 模块:提供了对 AspectJ 的集成支持。
  • spring-instrument 模块:提供了 class instrumentation 支持和 classloader 实现,使得可以在特定的应用服务器上使用
  • spring-instrument-tomcat 模块:包含用于 Tomcat 的 Spring 的工具代理。

(3)Messaging
spring 4 以上的版本,包含了 Spring 集成项目(如Message、MessageChannel、MessageHandler等)的关键抽象概念,并为基于消息的应用程序提供了基础。该模块还包括一组用于将消息映射到方法的注释,类似于基于Spring MVC的基于注释的编程模型。

(4)Data Access/Integration
该层包含了:JDBCORMOXMJMSTransaction 模块。

  • spring-jdbc 模块:提供了一个 JDBC 抽象层,它可以消除冗长的 JDBC 编码和解析数据库厂商特有的错误代码
  • spring-tx (Transaction)模块:支持编程和声明性的事务管理,这些事务类必须实现特定的接口,并且对所有的 POJO(Plain Old Java Objects) 都适用。
  • spring-orm 模块:为流行的对象-关系映射 API(如 JPA、JDO、Hibernate、iBatis等)提供了一个交互层。利用 ORM 封装包,可以混合使用所有 Spring 提供的特性进行 O/R 映射。如前面提到的简单声明性事务管理。
  • spring-oxm 模块:提供了一个对 Object/XML 映射实现的抽象层,如 JAXB、Castor、JiBX 和 XStream。
  • spring-jms(Java Messaging Service) 模块:包含了一些制造和消费消息的特性。自 Spring Framework 4.1 以来,它提供了与 Spring - messaging 模块的集成

(5)Web
Web层包含了:spring-webspring-webmvcspring-websocket 模块。

  • spring-web 模块:提供基础的面向 Web 的集成特性,例如:多文件上传、使用 servlet listeners 初始化 IoC容器以及一个面向 Web 的应用上下文。它还包含一个 HTTP 客户端和 Spring 远程支持中 Web 的相关部分。
  • spring-webmvc 模块(也称为:Web-Servlet 模块):包含 Spring 的 model-view-controller (MVC) 实现REST Web Services 实现。Spring 的 MCV 框架使得模型范围内的代码和 web forms 之间能够清楚地分离开来,并与 Spring 框架的其他特性集成在一起。

(6)Test
支持使用 JUnit 和 TestNG 对 Spring 组件进行单元测试和集成测试。它提供了 Spring applicationcontext 的一致加载和这些上下文的缓存。它还提供了可以用于隔离的模拟对象。


环境搭建

1、安装GitHub

下载网址https://desktop.github.com/

2、安装Gradle
Gradle 是一个基于 Groovy 的构建工具,它使用 Groovy 来编写构建脚本,支持依赖管理和多项目创建,类似 Maven,但比其更加简单轻便。Gradle 为 Ivy 提供一个 layer,提供了build-by-convention 集成,而且它还让你获得许多类似 Maven 的功能。
下载网址https://gradle.org/releases/
下载后将文件解压放到指定目录中(笔者放在:D:\Program Files 目录下),然后开始进行环境变量的配置。

(1)根据对应目录创建 GRADLE_HOME 系统变量;

这里写图片描述

(2)将系统变量加入到 path 中。
这里写图片描述

(3)测试
当完成系统变量的配置后打开命令窗口输入命令 “gradle -version”,如果安装成功会出现 Gradle 对应的版本信息。

这里写图片描述

3、下载 Spring

(1)打开安装好的 GitHub Desktop,注册、登录。

这里写图片描述

(2)下载源码:File –> Clone repository –> 输入源码地址(git://github.com/SpringSource/Spring-framework.git)

这里写图片描述
这里写图片描述

(3)等待下载完毕,打开文件夹查看。

这里写图片描述
这里写图片描述


注意:当前的源码并不可以直接导入 Eclipse 中,我们还需要将源码转换成 Eclipse 可以读取的形式。
下图中的 import-into-eclipse.bat 是 windows 下的批处理命令可以把 git 项目修改成 Eclipse 需要目录结构。一次性将所有的模块都转换成 Eclipse 项目(时间可能有点久)。
这里写图片描述

转换成功,之后即可导入 Eclipse 中。也可以将 Eclipse 项目导入 intellj IDEA 中。
这里写图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值