Spring源码1-走近spring
本文为博主原创,转载请注明出处
前言
今天想要开一个坑,就是spring源码的坑。
开了坑我一定会慢慢完成这个坑,但过程可能会较长。希望大家能慢慢关注啦。
我自己也是从一个小白开始慢慢开始阅读源码,慢慢进步,而过程中最痛苦的过程就是spring源码。
许多公司面试Java,尤其是高级开发,都会提问有没有看过spring源码,这仿佛成为了一种标准,你看过源码就说明你是高级开发。
而我认为会来看我的帖的,应该是对spring源码感到很痛苦,或者还没开始看,准备看的。但是我慢慢摸索,已经有点眉目,所以想要说出自己的理解,说出自己理解的spring,还是挺有意思的,不会很枯燥。
找到spring阅读的兴趣,使我们一提到spring,就会觉得很有趣,很兴奋,有兴趣继续了解,而不是打开源码一行都看不下去。
我不能保证我的文字有多么优秀,或者分析有多么透彻,但我一定能保证的是,大家一定能从我的文章中,找到兴趣。
如何开始Spring
市面上有很多书以及文章,大部分是直接开始介绍源码,但我想说,这就是我踩过的坑,直接看根本没有一点兴趣!
Spring阅读核心
看spring一定要关其大意,了解全部大意之后,再开始看源码。观其大意(看大体框架,架构,不要关注代码,不要关注细节)
重点开始
下面的标题可能没有那么吸引人,或者说有点搓。但是大家看了一定会眼前一亮。
为什么用Spring
spring到底有什么用?spring最大的用处是什么?
很多人会说的很专业化——解耦。
我来说说我的理解。
提问:大家之前用安卓手机有没有觉得很卡,而且是越用越卡,所以安卓手机使用寿命很短,很少有手机能用三年以上,但是现在几年,我们的华为,小米,oppo,还有我最喜欢的一加手机,好像不卡了,能用很久,为什么?
回答:当年的程序员水平很差,不知道我们写的程序,写完都会产生垃圾的,代码也是乱写,写了回不回收呢,不回收的,能实现功能就不错了。现在很多程序员也还是这样的。比如:
object rubbish=new object();
这是不是垃圾?再比如:
List list=new ArrayList();
list.add(1);
这是不是垃圾?你能保证这些一定会被回收吗。换到java中来说,可能并不是所有开发者都很了解JVM(java虚拟机),了解GC(垃圾回收),OpenJDK(虚拟机)的源码。这是以前安卓手机卡的原因,不回收。
那么Spring作用来了,他火了,我个人认为(个人观点),Spring最好的地方就是帮程序员们管理对象,大家不需要关注回收,不需要关注对象的生命周期,只管用就好了。
Spring怎么用呢,说白了,就是不用new对象了,我就把我需要的对象,交给spring,spring就会帮我们管理。你需要的时候,通知spring,他会帮我们new,还会帮我们destroy(回收),我们的手机再也不卡啦。
所以Spring可以看作一个管理工具。贼好用,谁用谁知道。
spring的理念
提问:为什么org会写Spring这个东西呢?为什么Spring是开源的,难道org不赚钱的吗?为什么感觉用了Spring之后Java的写代码方式都完全变了,这还是Java吗?
回答:Spring是一个不的了的东西。Spring我把它比作曹操,很合适。你让曹操三分天下,曹操愿意吗?曹操只想要一统天下,Spring也是一样。Spring最好是把Sun公司(Java的母亲)也干掉,把Java都干掉,就用我一个Spring开发,够了。这个初衷导致Spring设计成能够整合所有的其他框架。
Spring伟大吗
我认为Spring真的伟大,为大家创造了简单的编程环境,但是Spring并不是伟人哈,也有自己的本性,但是一定是功远大于过的,我觉得还是站在中立角度去看待他比较好。
大家知道代码这东西可是没有版权的,我复制你的代码,我可不犯法。Spring中其实有很多代码都是从JavaEE中抄袭的,就改了一个类名和属性名,再后续的文章中我们会慢慢接触到。但是没人会说Spring是贼,是赝品,只能说是借鉴了java的思想。
Spring的发展
Spring只是一个框架吧,但是我们最终写的代码还是Java,并不是Spring没错吧。我们知道Sun公司有一个社区,叫做JavaEE社区,社区规定了Java的标准。比如servlet就是标准,请求过来,你能不用servlet处理吗,不行吧,因为这就是标准。换句话说,请求过来,我用一个叫做test的类处理行不行,行,但是社区规定了,这就是标准,全世界都用servlet你怎么用test?
Spring一开始并不是标准,但是spring用的人越来越多,越来越多,原因当然是因为他好用咯。渐渐的,JavaEE社区被Spring攻占了,社区没办法,行吧,Spring就是标准,你们都去用Spring吧,全世界一起用。但是可能JavaEE社区有苦说不出呢(猜的),你说你代码还有思想很多都是借鉴我的,现在我还要以你为标准,难受啊。