文档章节

Spring源码阅读——2

叶枫啦啦
 叶枫啦啦
发布于 08/18 11:52
字数 687
阅读 5
收藏 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
博文 566
码字总数 343870
作品 0
海淀
私信 提问
熔断器 Hystrix 源码解析 —— 执行命令方式

摘要: 原创出处 www.iocoder.cn/Hystrix/com… 「芋道源码」欢迎转载,保留摘要,谢谢! 本文主要基于 Hystrix 1.5.X 版本 1. 概述 2. 实现 3. BlockingObservable 666. 彩蛋 🙂🙂🙂关...

Java公众号_芋道源码_每日更新
10/28
0
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-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

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot中使用@RequestBody时如何自定义需要转换的日期格式

SpringBoot序列化和反序列化Json时默认使用的是Jackson(例如使用@RequestBody反序列化前端传递过来的Json字符串时), 当我们前端使用Json字符串传递到后台时日期格式可能是时间戳(即long类...

帅得拖网速
31分钟前
0
0
可自定义扩展底部列表对话框ListBottomSheetDialogFragment

因为需要,为了方便,构建了一个可以自定义扩展的底部列表对话框,可以应付大部分场景。 效果图如下: 1.默认实现: 2.自定义列表实现 3.自定义头部和列表实现 一.可实现功能 1.默认可实现通...

明月春秋
今天
1
0
数据库---增删改查

增:insert into 表名(列名1,列名2) values(‘列值1’,‘列值2’) 多行数据处理:insert into 表名(列名1,列名2) select ‘列值1’,‘列值2’ union select ‘列值1.1’,‘列值2.2...

森林之下
今天
2
0
分布式/集群下session共享方案汇总

除去那些对容器依赖特别高的方案(如: 基于Tomcat的memcached-session-manager / tomcat-redis-session-manager,基于Jetty的jetty-nosql-memcache / jetty-session-redis ),自己整理了下...

哥本哈根的小哥
今天
2
0
Vue中的缩写:v-bind、v-on

v-bind 缩写:: 预期:any (with argument) | Object (without argument) 参数:attrOrProp (optional) 修饰符: .prop - 被用于绑定 DOM 属性。 .camel - (2.1.0+) 将 kebab-case 特性名转换......

文文1
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部