发表:2022-09-09 08:12:02 浏览数:
来源:作者:
谢谢邀请!下面从以下几点进行说明
1、学习Spring源码前,需要想以下几点
2、为什么要学习Spring源码?
3、学习Spring源码的方法
4、总结
学习Spring源码前,我们需要想以下几点?
① 为什么会存在Spring框架,能做什么?如果要我来做,我该怎么做?
② 然后我们在学习的过程中会遇到许多概念,比如IOC、AOP、DI、BeanFactory、ApplicationContext等一些概念,需要详细了解明白
IOC: 缓存Bean的地方。存放在Map容器中。
DI: 可以是set/get/constructor,通过反射进行注入
AOP:为了增强 原始Bean的功能(代理技术)
③ 能做什么?java中的万能胶 ,做了什么?帮我们管理Bean,管理bean的生命周期
④ 如果需要我来做,我会怎么做? (怎样手写一个mini版Spring)
(1) 我们要预设一些规则,比如定义一些扫描注解、扫描哪些 包?
(2) 然后按照一定的顺序去加载扫描包下的Class类,放入Map中。
(3) 扫描上面的Class 类,然后判断是否实现了一些注解,如果实现了,实例化后放入Map中
(4) 依赖注入,给实例化的Bean进行属性注入。
为什么要学Spring源码?
在学习源码前,我们需要知道为什么需要学源码?
① 为什么Mybatis 我们只需要写Dao接口就可以了,因为Spring 底层帮我们做了代理,用到的技术就是动态代理。
② Dubbo 的远程调用为什么和调用本地方法一样呢?原因也是动态代理,Dubbo 把 调用的细节封装在代理类中。
③ 还有一些拦截器思想:SpringMVC 拦截器、AOP 底层代码的拦截器+递归思想、Mybatis插件拦截器等。
上述的技术都是一通百通,百变不离其宗。
3 快速定位线上问题: 遇到线上的问题,特别是框架源码里的Bug,能够快速定位,这就是你和被人的优势。
4. 对面试大有益处: 面试一线互联网公司对于框架技术一般都会遇到源码级别的。
5.拥抱开源社区:参与到开源项目的研发,结实更多大牛
学习Spring源码的方法
1. 先使用:先看官方文档快速掌握框架的基本使用,
2. 调试的时候,完全可以在运行环境,导入jar包就能调试,可以由针对性的打断点
3. 抓主线:找一个demo入手,顺藤摸瓜快速静态看一遍框架的主线源码(抓大放小),画出源码主流程图,切勿一开始就陷入源码的细枝末节,遇到不明白的可以才,七分猜测三分验证,如果猜对了,就会有成就感。
4. 画图做笔记:总结框架的一些核心功能点,从这些功能点入手深入到源码的细节,边看源码边画源码走向图,并对关键源码的理解做笔记,把源码里的闪光点都记录下来,后续借鉴到工作项目中,理解能力强的可以直接看静态源码,也可以边看源码边debug源码执行过程,观察一些关键变量的值
5.整合总结:所有功能点的源码都分析完后,回到主流程图再梳理一遍,争取把自己画的所有图都在脑袋里做一个整合
总结
1、官网是最好的一手资料。
2、一定要在掌握框架的使用以后再去研究源码
3、源码可能需要你的一些技术准备:比如 java技术功底、java设计模式等
4.学习最好的方法就是两个字: 重复,看源码的 第一遍是很痛苦的,看第二遍 第三遍 ,你的思路就会越来越清晰。
5、学习最好的方法就是重复,耐得住 寂寞,你才会成为 最终的王者。
本文由码农的一天撰写,如果你认同我的观点的话,可以点赞加关注一下;如果你对本篇文章有其他见解的话,也欢迎在下方的评论区浏览讨论!
我一直想回答这个问题,但是由于我的答案是软件开发相关的,比较小众,怕别人很难理解。现在这个关于Spring的问题的回答就算是我对这个问题的回答吧。
软件开发的一个亘古不变的方针策略就是抽象、透明和封装。语言从汇编到面向过程到面向对象,开发从原生代码到类库到框架,都是这个趋势。别说软件开发了,就说软件使用吧,从DOS命令行到GUI图形化界面,也是这个方向。
抽象、透明、封装就是不让你陷入到底层的细节当中,把精力专注在你那一层面的问题上。什么叫你那一层面的问题?你开发产品或者项目,就把精力用在实现业务需求上。并不是底层不重要,而是没必要到一开始就去看底层源代码的地步!
我想先问一下题主和有些答主,在没有正确的学习路径下,一时不知道如何提高自己又心急的人,很容易想到的就是去读底层源码
谢谢邀请!
作为一名从业多年的程序员,我曾经长期使用过Java,也出版过Java编程方面的书籍,所以我来回答一下这个问题。
对于编程零基础的人来说,学习Java的难点在于对各种抽象概念的理解,由于Java是纯粹的面向对象语言,任何的功能实现过程都有一个严格的编程思路,所以首先就要了解Java的编程过程,通过大量的实验逐渐建立起Java的编程思想。
Java学习的难点集中在Java基础知识部分,越往后学习越简单,Java后期学习的重点已经不在Java语言自身了,而在于算法设计、应用场景(平台)、资源整合等方面。所以,学习Java首先就要把基础的Java概念搞清楚。Java的基础概念中比较重要的包括类、对象、属性、方法、封装、继承和多态,把这几个概念搞清楚基本上就明白一大半了。要想搞明白这些概念首先就要了解这些概念怎么用,通过功能的实现过程来了解概念会更容易一些。面向对象的功能实现过程分成三步,分别是类的定义、对象的创建和功能(方法)的调用,通过这个过程就能逐渐建立起概念的画面感。另外,基础部分还包括异常处理、IO操作、集合、序列化、多线程以及网络编程基础等内容,这些内容都是非常重要的,要通过大量的实验来逐渐掌握。
完成基础部分的学习之后,接下来需要学习数据库开发、分布式开发、框架开发等内容,JavaEE版本目前已经交由Eclipse基金会管理了,Eclipse基金会把JavaEE重新命名为JakartaEE,所以当前所说的JavaEE通常指的是采用Java进行企业级开发所需要的一系列技术,与早期的JavaEE已经有了一定的区别。
我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。
如果有互联网方面的问题,或者考研方面的问题,都可以咨询我,谢谢!
说到如何快速学习一门新技术,我可谓是比较有心得。在互联网行业从业近10年,时刻都需要知识更新,有的时候就需要在短时间内完成任务。快速学习,我总结自学一门新的技术,要注意以下几点。
首先要有积极开放的心态,并设定学习时限
首先,你的心态很重要。如果一开始你对这个事情是排斥的,认为是别人强加给你的或者你认为自己做不掉。你就已经失去了自学的动力。一鼓作气,再而衰,三而竭。学习之前要给自己一个deadline时限,严格要求自己。三天打鱼、两天晒网不仅影响学习效果,而且增加了你章节复习的时间。
如何寻找资源
一旦你确定目标,并且决心要把它攻克下来的时候。下一步就是要寻找学习资源,来帮助你进行有效学习。
网络上有很多的资源,但是良莠不齐,既然你是想自学,肯定是期望免费的资源。免费的或者(收费极低)的资源获取渠道,通常有这么几种。
为了避免广告嫌疑:我举几个例子,对这几个渠道就不做过多描述。今日头条精品课、某宝购买盗版教程(知识不是盗版的)、某字母站等
如何判断一个学习资源的好坏?
1. 如果是视频课,一般都有试听章节,一定要去试听,讲师的讲课风格是否能够接受,是否拖沓,方言口音的接受程度等等。
2. 如果是视频课,一定要有配套文档、配套代码、或者最好是有讲师的配套答疑服务。
看视频还是看书,如何看视频课
除非你是非常基础的小白,我还是建议你还是看书。因为看视频太浪费时间了。最好的效果是视频+文档配套的课程。
对于文档中能看明白的章节,就不要去看视频。对于文档中看起来有困难的章节,再去看视频。
小我不才,也是今日头条科技领域的原创作者,也出了一套springboot的视频+文档。你也可以点击我的头像,进去看看。
基础很重要
另外不得不说,基础很重要。决定了你学习一个知识的的快慢和掌握程度,所以平时要注意多积累,基础要扎实。像是内存、线程、并发、IO这些基础平时要多注意去学习,这样你在学习新技术的时候才会更快。
动手去做,记笔记
学会提问,接近大牛
要学会如何提问,我经常遇到一些小白问问题是这样的:XX 你好,我照着你在github上面的代码,写出来的,有问题啊,运行不起来啊!
这种问法,一般我都不会搭理他:
1. 上来就把责任放到我的代码上,我开源一个代码,还要接受指责自然不会帮助这种小白。
2. 问问题,要有上下文,要说明几件事。一是你在做什么?二是你的需求是什么?三是你的bug(问题)是什么?四是你的代码是什么?五是的你的报错异常截图是什么?最好在描述一下运行环境之类的信息。我看到这种问问体的方式,我会很愿意回答的,感觉自己遇到了知己。
3. 平时看看大牛是如何工作的,如何学习的。他都去哪些网站?做那些事情?做哪些总结。
Sary作为沙特B2B电商领头羊,在沙特电商行业的B2B市场份额中占80%。此次收购埃及同行Mowarrid,意味着Sary向北非市场的首次扩张,接下来Mowarrid也将作为Sary埃及站点开放。埃及是非洲第二大经济体,也是阿拉伯世界...
本文目录鬼吹灯 Shirley杨怎么读Shirley中文怎么读shirley怎么念这些英文名怎么读Judy赞美Doris海洋女神名,属于大海
易贝滴眼液和贝复舒眼用凝胶一起用(贝复舒眼用凝胶冷冻后能用吗...
本文目录贝复舒眼用凝胶冷冻后能用吗贝复舒凝胶的作用贝复舒眼用凝胶冷冻后能用吗贝复舒眼用凝胶冷冻后可能会影响到药物的效果,如果用于干眼症或严重
体验式购物和比价购物哪个才是趋势?你们网购一般在哪里,有优惠...
有优惠吗欢迎来交流汽车充气泵哪个牌子好体验式购物和比价购物哪个才是趋势购物,所以说在淘宝上购物也不是很积极主动,购物会有比价,本文目录体验式
爱淘金为什么没有签到了(保险公司做保险业务员,几个月没开单了...
本文目录保险公司做保险业务员,几个月没开单了,是不是应该辞职了网络成了诈骗犯的法外之地,为何抓捕困难为什么大学老师总是爱整一些所谓的平时分,
本文目录弈航李宁工厂店是正品吗商场李宁工厂折扣店里的鞋子是真货么广州新塘有没有李宁工厂店济南李宁工厂店有哪些具体地址,谢谢李宁超级工厂店怎么
lookfantasticapp下载(微信向苹果投降了吗13.4有黑夜模式了)
本文目录微信向苹果投降了吗13.4有黑夜模式了有什么好用的图片编辑软件怎么看look直播你喜欢什么app,喜欢它的理由是什么微信向苹果投降了
惠氏铂臻莹萃有机奶粉(有机奶粉和普通奶粉的区别大吗有机奶粉哪...
本文目录有机奶粉和普通奶粉的区别大吗有机奶粉哪款更值得推荐6个月宝宝喝惠氏启赋蕴萃有机奶粉怎么样铂臻奶粉怎么样对宝宝健康好吗惠氏铂臻奶粉港版
跨境电商还值不值得做跨境通能摘帽吗跨境电商未来的前景如何2021年跨境电商有前途吗2020年,很多人都通过跨境电商获得了利润,但是如果在跨境
facebook message apk(台湾、香港和澳门的人平时聊天都用微信吗...
本文目录台湾、香港和澳门的人平时聊天都用微信吗外贸人应该如何利用碎片化时间有效吸引客户询盘中国大部分人都玩微信,外国人玩什么通过什么方式交流
本文目录这段时间关注朴槿惠的人为何突然猛增为什么日本解散了财阀,韩国却不能腾讯的势力到底有多大,为什么说腾讯是中国版的超级财阀这段时间关注朴
国内cfa最好的十大培训机构(中国最好的金融培训机构是哪家)
本文目录中国最好的金融培训机构是哪家国内哪家CFA辅导机构好,金程教育业内好像挺知名的CFA考的人多吗,哪家辅导机构最出名找金程辅导CFA,
离岸公司注册代理在哪个网站发布信息(你们注册离岸公司会找哪家...
本文目录你们注册离岸公司会找哪家代理公司帮忙会比较好我想注册离岸公司,可不知道该在哪里注册请大家推荐下想开设离岸账号接受美金,推荐一家正规的