spring源码分析第一天------源码分析知识储备
spring源码分析第一天------源码分析知识储备
Spring源码分析怎么学?
1、环境准备;
2、思路
看:是什么? 能干啥
想:为什么?
实践:怎么做?
调试的时候,完全可以在运行环境,导入jar就能调试(有针对性的打断点)
3、如何从0到1去学习
首先看官网文档,去网上找资料参考 (有了基本的概念,产生很多问题,很多猜想)
然后,看项目结构(更加具体的了解,还是产生很多猜想)
为什么会存在Spring这个东西?
能做什么,做了什么,要我来做,我该怎么做?
IOC、AOP、DI、BeanFactory等这样的一些零碎的概念
能做什么:Java中的万能胶
做了什么:Java Bean能够实现无缝对接
要我来做,我该怎么做: 作为一个框架而言,在编写框架代码的时候,所要对接Bean是不存在
通过预设规则,按照一定的规则去顺序加载或识别需要对接的Bean
(反射,通过类全名字符串可以找到并创建一个Bean的实例)
规定配置文件的默认名字
IOC:缓存的地方,得把它存起来(Map容器)
DI:getter、setter、constructor(反射、invoker)
AOP:为了增强原始Bean的功能(代理技术)
4、没有Spring以前是如何开发?
a、很多设计模式需要自己去整合;
b、所有的封装、继承、多态、增强、依赖、模块管理等等工作都有自己制定统一的规则(杂乱无章);
c、所有的创建对象、配置依赖关系、资源的重复利用、扩展性的手动操作
Spring出现以后,Java程序员解放了双手
5、如何学习Spring:七分猜测三分验证
看源码第一遍是非常痛苦的;
看第二遍、看第三遍思路越来越清晰
带着思考去找入口(主入口、隐藏的入口)
6、Spring:定位、加载、注册
ClassPathXmlApplicationContext app 显示的入口
查找用户需要加载哪些配置文件
读取配置文件
注册
spring源码分析第一天------源码分析知识储备相关推荐
- PostgreSQL数据库源码安装第一步——configure脚本分析(环境检测)
源码编译PG8.4.1时,需要在安装完几个依赖的开发库后,在源代码目录下运行configure脚本.下面我们就分析一下该名为configure的shell脚本.其主要功能是猜测系统依赖变量的值并创建M ...
- 黑马上新Spring全套教程(含实战源码)
"八股在手,offer全有",为了通过面试,你有背过"八股文"吗? 教程推荐:黑马程序员新版Spring零基础入门到精通,一套搞定spring全套视频教程(含实 ...
- Spring Boot 2.x 启动全过程源码分析(上)入口类剖析
转载自 Spring Boot 2.x 启动全过程源码分析(上)入口类剖析 Spring Boot 的应用教程我们已经分享过很多了,今天来通过源码来分析下它的启动过程,探究下 Spring Boo ...
- Spring Boot Dubbo 应用启停源码分析
作者:张乎兴 来源:Dubbo官方博客 背景介绍 Dubbo Spring Boot 工程致力于简化 Dubbo RPC 框架在Spring Boot应用场景的开发.同时也整合了 Spring Boo ...
- Spring Boot 2.x 启动全过程源码分析(全)
上篇<Spring Boot 2.x 启动全过程源码分析(一)入口类剖析>我们分析了 Spring Boot 入口类 SpringApplication 的源码,并知道了其构造原理,这篇我 ...
- Mybatis源码分析第一天------Mybatis实用篇
Mybatis源码分析第一天------Mybatis实用篇 一切最基本的操作就是参考官方文档:https://mybatis.org/mybatis-3/zh/configuration.html ...
- jdk、spring、mybatis、线程的源码分析
基础篇 从为什么String=String谈到StringBuilder和StringBuffer Java语法糖1:可变长度参数以及foreach循环原理 Java语法糖2:自动装箱和自动拆箱 集合 ...
- 源码通透-mybatis源码分析以及整合spring过程
源码通透-mybatis源码分析以及整合spring过程 mybatis源码分析版本:mybaits3 (3.5.0-SNAPSHOT) mybatis源码下载地址:https://github.co ...
- spring事务源码分析结合mybatis源码(二)
让我们继续上篇,分析下如果有第二个调用进入的过程. 代码部分主要是下面这个: if (isExistingTransaction(transaction)) {return handleExistin ...
最新文章
- 记录EasyUI使用中的问题和解决的方法
- ObjectIOStream 对象流 ByteArrayIOStream 数组流 内存流 ZipOutputStream 压缩流
- 【UIKit】表格 UITableView
- 工具——Java后端开发中用到的一些工具(windows)
- 【PAT甲级 多项式相乘】1009 Product of Polynomials (25 分) C++ 全部AC
- c语言排序系统代码怎么写,排序概述(c语言)(示例代码)
- REVERSE-PRACTICE-BUUCTF-3
- Flask模板参数传值的方法
- python2.7.11 for iOS 苹果上的python27环境
- Matlab保存imagesc函数没有缩放的伪彩图
- Shopee菲律宾站如何选品?听Shopee Man本土多店管理系统告诉你
- 网络嗅探器(影音神探) v4.63 绿色正式版
- 基于SSM实现个性化健康饮食推荐系统
- Effective Java 2.0_中英文对照_Item 7
- DirectX是什么
- html5如何快速根据psd,微页h5制作工具怎么快速导入PSD源文件?
- 我的身体为什以会这样?如何诊治?
- 性能测试中的服务器数据监控
- 常用dns114.114.114.114与8.8.8.8的区别
- 如何使用Socks5代理IP加密Windows网络数据传输
热门文章
- 面试官:AtomicInteger是如何保证线程安全?
- @Autowired报错的4种解决方案和原因分析!
- 面经分享:历时半个月,终于拿到了蚂蚁金服的offer!
- C# Winform 窗体美化(五、鼠标穿透)
- jsp中redirect和forward的区别
- 没有已启用的仓库。 执行 “yum repolist all“ 查看您拥有的仓库。
- n个小球放入m个盒子中_飞么盒子卫生巾自助售卖机前景
- java实现extended smtp_java实现发送邮件(SMTP)
- vasp和ms_科学网—VASP如何计算铁磁和考虑强关联作用 - 叶小球的博文
- oracle 监听拒绝连接,报mybatis映射文件错误Listener refused the connection with the following error: ORA-12519, TNS