博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring 源码探险01 概念
阅读量:6452 次
发布时间:2019-06-23

本文共 1644 字,大约阅读时间需要 5 分钟。

Spring意义:简化开发

Spring是面向Bean的编程,提供了IOC容器通过配置文件或者注解方式来管理对象之间的依赖关系。
IOC 控制反转,依赖注入
原本的类Test A=new Test(); A.get();、

这种实例化的控制权在我们手中,现在利用spring注解如@Autowired的方式spring初始化了这个对象,控制权反转到了spring手中。

IOC容器存储的是javabean

实现依赖注入,

@autowrite interfaceA a 自动把它实现类注入进来
@Resource(“aaa”) A b IOC容器中吧id为aaa自动注入到这里
@autowrite A a 根据类型自动注入

Spring注入方式

1 setter
2 构造方法
3 强制赋值

实例化的先后顺序 b a c

依赖链中的所有对象,ioc容器里面初始化

class C{

private A a;

public void fun(){

();
}
}

Class A{

private B b;

}

面向切面AOP

先要把一个整体,拆分,分别开发,等到发布运行的时候再组装到一起运行。 拆分的规则就是切面,根据切面在无缝组装。 核心思想就是解耦

AOP完全融进了spring

Authentication 权限

Logging 日志
transction manager 事务
Lazy Loading 懒加载
context process 上下文处理
Error handler 错误跟踪(异常捕获机制)
cache 缓存

di 依赖注入

IOC 控制反转
AOP 面向切面
Spring 核心宗旨 :简化开发
AOP核心宗旨:解耦

用到了代理模式 CGLib动态代理

AOP:事务代理(声明式事务,哪个方法需要加事务,哪个方法不需要加事务) 日志监听 service 方法
开启事务open
事务的执行是由我们自己的代码完成
监听是否有异常,可能需要根据异常类型来决定事务是否回滚或者继续提交 commit rollback
事务要关闭close
蓝色都是动态代理完成的

Spring思想 应用场景 归纳

AOP 找出多个类中有一定规律的代码,开发时候拆开,运行时合并。面向切面编程,即面向规则编程 解耦,专人做专事
OOP 归纳总结生活中的一切事务。面向对象编程。 封装,继承,多态
IOC 把new对象的权利交给spring事务,并且由spring来保存已创建的对象 控制反转
DI/DL 依赖注入,依赖查找。spring不仅保存自己创建的对象还保存了对象与对象的关系。注入即赋值,主要是三种方式:构造方法,set,直接赋值 先理清关系再赋值
BOP 面向bean设计程序 一切从bean开始

俯瞰Spring架构设计

Spring总共大约有20个模块,由1300多个不同的文件构成。这些组件被分别整合到了核心容器(Core Container),AOP(Aspect Oriented programming)和设备支持(Instrmentation),数据访问及集成(Data Access、Integeration),web,报文发送(Message),Test, 6个模块集合中。
如下是Spring4的架构图

Spring依赖结构图

Spring源码学习路线图:从Spring-core入手,接着是spring-beans和spring-aop然后是spring-contest,然后是spring-tx和spring-orm 最后是spring-web和其他部分

源码下载:

第一步

第二步

下载gradle

第三步

解压,配置GRADLE_HOME 和Path

第四步

验证 gradle -v 环境变量是否正确

第五步

构建eclipse项目 gradle eclipse -x :eclipse
需要等待一段时间

第六步
引入到eclipse环境中

转载地址:http://iagwo.baihongyu.com/

你可能感兴趣的文章
[GXOI/GZOI2019]旧词——树链剖分+线段树
查看>>
android 补间动画的实现
查看>>
2017年广东省ACM省赛(GDCPC-2017)总结
查看>>
第十届蓝桥杯B组C++题目详解和题型总结
查看>>
树的存储结构2 - 数据结构和算法42
查看>>
函数的嵌套调用
查看>>
OC中使用 static 、 extern、 const使用
查看>>
简单理解函数回调——同步回调与异步回调
查看>>
POJ 1007
查看>>
Android 多个Activity 跳转及传参
查看>>
中文文本预处理流程(带你分析每一步)
查看>>
anroid 广播
查看>>
AJAX POST&跨域 解决方案 - CORS
查看>>
如何设计企业内部的数据平台?
查看>>
关于最小生成树中的kruskal算法中判断两个点是否在同一个连通分量的方法总结...
查看>>
【译】Linux系统和性能监控(4)
查看>>
开篇,博客的申请理由
查看>>
点滴积累【C#】---C#实现上传word以流形式保存到数据库和读取数据库中的word文件。...
查看>>
Ubuntu常用笔记
查看>>
Token和session 详解
查看>>