文档章节

Spring源码阅读——2

叶枫啦啦
 叶枫啦啦
发布于 08/18 11:52
字数 687
阅读 3
收藏 0

在阅读源码之前,先了解下Spring的整体架构:

1、Spring的整体架构

1. Ioc(控制反转)

  1. Spring核心模块实现了Ioc的功能,它将类与类之间的依赖从代码中脱离出来,用配置的方式进行依赖关系描述,由Ioc容器负责依赖类之间的创建,拼接,管理,获取的工作

  2. BeanFactory接口是Spring框架的核心接口,它实现类容器许多核心的功能;

  3. Context模块构建于核心模块之上,扩展类BeanFactory的功能,添加类国际化,Bean生命周期控制,框架事件体系,资源加载透明化等多项功能。ApplicationContext是Context模块的核心接口;

2. AOP(面向切面编程)

  1. AOP是进行横切逻辑编程的思想,它开拓类考虑问题的思路;

  2. Spring提供类满足AOP Alliance规范的实现,整合类AspectJ这种AOP语言级的框架

  3. 在Spring里实现AOP编程由众多选择;

3. Spring MVC

  1. Spring提供一个完整的类似于Struts的MVC框架,称为Spring MVC

  2. Spring也可以整合其他Struts,WebWork等MVC框架;

  3. 以DispatcherServlet为核心,实现了如何与Web容器环境集成,Web请求的拦截,分发,处理和ModelAndView数据的返回,以及集合前端模块。

4. Spring JDBC/ORM

  1. Spring在DAO的抽象层面,建立了一套面向DAO层的统一的异常体系

  2. 同时将各种访问数据的检查型异常转换为非检查型异常,为整合各种持久层框架提供基础

  3. Spring通过模板化技术对各种数据库技术进行封装,将模板化的代码隐藏起来,是数据访问的程序得到大幅简化;

5. Spring事务处理

  1. 借助AOP技术,Spring提供了声明式事务的功能;此外,还支持编程式事务。

  2. Spring事务分为全局事务和局部事务,全局事务需要借助底层容器的JTA(Weblogic,Websphere)机制,局部事务可以整合其他持久化框架,由事务处理器进行处理如DataSourceTransactionManager,HibernateTransactionManager,JtaTransactionManager,JdoTransactionManager等。

6. Spring远程调用

  1. 提供一个在Web应用中高效,双向的通信;

  2. 需要考虑到客户端和服务器之间的高频和低时延消息交换

7. Spring应用

  • Spring的一些子项目

© 著作权归作者所有

共有 人打赏支持
叶枫啦啦
粉丝 10
博文 563
码字总数 334343
作品 0
海淀
那些年,我们一起追的Spring

学无止境,但仍需及时总结。 自去年开始写作以来,写了一些关于Spring的文章,今天将它们汇总起来,一方面方便大家阅读,另一方面,也是一次小的复盘总结。 IOC 首先是Spring的IOC,也就是控...

SexyCode
08/14
0
0
mybatis使用@Param的坑

在mybatis中@Param注解的作用是为参数指定一个名称,在mapper文件中使用,而不是使用mybatis的arguments[0,1…]代替。但是在非动态的mapper——mybatis根据mapper接口创建实现类,@param注解...

风之神
08/22
0
0
Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密...

小致dad
08/03
0
0
网关 Spring-Cloud-Gateway 源码解析 —— 网关初始化

网关 Spring-Cloud-Gateway 源码解析 —— 网关初始化 Harries Blog™2017-12-135 阅读 SpringAppclasspathcatbeanAPIbuildbug 本文主要基于 Spring-Cloud-Gateway 2.0.X M4 摘要: 原创出处 ......

Harries Blog™
2017/12/13
0
0
向Spring大佬低头——大量源码流出解析

用Spring框架做了几年的开发,只停留在会用的阶段上,然而Spring的设计思想和原理确实一个巨大的宝库。大部分人仅仅知道怎么去配,或着加上什么属性就能达到什么效果,这些东西都可以通过查文...

Java团长17
07/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
2
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
119
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
4
0
我为什么用GO语言来做区块链?

Go语言现在常常被用来做去中心化系统(decentralised system)。其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。 我们在决定做Karachain的时候,考量(b...

HiBlock
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部