网站首页 > 博客文章 正文
Spring框架是一个分层框架,包含一系列的功能要素,被分为如下模块:
1、Core Container
???java(核心容器),包含有Core、Beans、Contexts 和 Expression Language模块,其中Core和Beans是Spring框架的最基础部分,提供IOC相关功能
Core主要包含Spring框架的核心工具类
Beans主要包含访问配置文件、创建和管理bean以及DI相关的一些类
Contexts基于Core和Beans模块之上,为Spring提供大量的扩展,提供了国际化,资源加载等
Expression即SpringEL与JSP的EL表达式类似,可以方便的获取属性的值,属性的分配,方法的调用,访 问数组上下文等
2、Data Access/Integration
???该层主要由JDBC、ORM、OXM、JMS 和 Transactions 模块,主要是和数据库相关的操作
JDBC此模块包含了 Spring 对 JDBC 数据访问进行封装的所有类
ORM 关系映射API,为JPA,Hibernate,mybatis等提供一个交互,利用ORM,可以混合的使用Spring特性进 行ORM映射
OXM模块提供了一个对 Object/XML映射实现的抽象层
Transactions:事务的相关操作
3、Web
???Web 上下文模块建立在应用程序上下文模块之上,为基于 Web的应用程序提供了上下文
Web:提供了基础的面向 Web 的集成特性。
Servlet web.servlet.jar: 该模块包含 Spring 的 model-view-controller (MVC) 实现
Porlet 模块: 提供了用于 Porlet 环境和 Web-Servlet 模块的 MVC 的实现
4、AOP
???面向切面编程,将公共部分抽取出来,为系统解耦。
Aspects 提供了对 AspectJ 的集成支持。
Instrumentation提供了 class instrumentation 支持和classloader实现,使得可以在特定应用服务器上使用
5、TEST
???Test模块支持使用 JUnit 和 TestNG 对 Spring 组件进行测试。
上面简单的描述了Spring的整体介绍,下面我们开始搭建Spring源码的阅读环境
1、从github上下载源码:https://github.com/spring-projects/spring-framework
也可以下载我的https://github.com/liangliang1259/spring-framework.git
其中remark分支中我对代码添加了比较多的注释 git环境请自行安装,由于最新的Spring版本底层采用jdk1.8,所以本地jdk请选择1.8版本
2、环境配置
安装gradle,spring使用grandle配置,安装成功后运行gradle -v命令,如下即安装成功 不会安装的请参考 http://jingyan.baidu.com/article/4d58d541167bc69dd4e9c009.html
3、源码编译
由于我使用的是idea,所以参考import-into-idea.md编译源码,即在根目录下执行 “./gradlew cleanIdea :spring-oxm:compileTestJava”命令(使用eclipse的请参考import-into-eclipse.bat,不过还是建议使用idea,都2017年了,谁还在eclipse上挣扎) 到此已经完成spring源码的初始化工作。
Spring源码的导入
由于最近开发的项目都是采用Springboot,所以阅读的base项目就选择了springboot,不想自己搭建的也可以copy我的:https://github.com/liangliang1259/spring-source.git
还有springboot的源码: https://github.com/liangliang1259/spring-boot.git
同样在remark分支有描述
打开spring-source项目后,在libir中选中相应的包添加即可,如下图01,02,03依次导入 org.springframework.boot:spring-boot:1.5.4.RELEASE相关以及core,context,beans等相关的包
至此Spring相关的环境以及搭建完成,接下来开始Spring源码的分析
推荐:一起了解下Java多线程基础
上一篇:Kafka 安装及快速入门
点击原文阅读更多
猜你喜欢
- 2024-09-11 项目spring boot实践系列2——spring security
- 2024-09-11 缓存管理方案 AutoLoadCache(缓存管理的功能是什么)
- 2024-09-11 可能是最全的Thymeleaf参考手册(四):标准表达式语法(三)
- 2024-09-11 缓存注解@Cacheable、@CacheEvict、@CachePut使用及注解失效时间
- 2024-09-11 SpringBoot进阶-缓存击穿,缓存穿透,缓存雪崩(八)
- 2024-09-11 Spring WebFlow 远程代码执行漏洞分析
- 2024-09-11 Spring 最常用的 7 大类注解,史上最强整理
- 2024-09-11 Spring常用的7大类注解(spring 常用的注解)
- 2024-09-11 Springboot常用注解(springboot常用注解和用法)
- 2024-09-11 SpringBoot 整合SpringSecurity示例实现前后分离权限注解+JWT登录认证
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)