欢迎来到天天文库
浏览记录
ID:37911306
大小:202.00 KB
页数:24页
时间:2019-06-02
《Spring_框架核心源代码分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、对于Java开发者来说,经常会用到一个框架—Spring,但是从用的角度来讲,很多人已经认为比较“复杂”了,但是我认为这个和思维方式有关,当人看到一个电视机,然后看完说明书(相当于Spring的用户文档),最后在磕磕碰碰的点击各种按钮后电视机开始工作了,但是他某一天想让电视机能干点说明书描述的东西以外的事情的时候,现在的电视机也就无能为力了,比如他想让电视机能够具备播放N种格式的视频,并且可以录制电视节目,他买的电视机并不能满足他的要求,必须换新的了,但是恰好他的这个老电视机的电路板上留出了各种插口,可以帮助用户拓展功能,这个说明书没有写,只
2、有维修人员知道,属于内部秘密,因为他们公司所有的电视都用一个电路板的设计做的,只是板子上有不同的插件罢了,这能减少很多设计成本、制作成本、维护成本、人员成本。那么这个用户根本不知道他的电视机还能增强,结果他又买了一个新的,这个新的电视机结果也是用着同样的电路板只是多了几个插件!对于软件这件东西,其实也是一样,spring也是一个软件,我们就属于那些使用者,如果我们不知道其中的原理,就没有办法有效地在合适的场景下使用Spring的一般特性和高级特性,也不知道如何在面对不同的应用环境中如何拓展好它以便更加好的让它为我们的应用服务。以上是一种观点,
3、估计您能理解,我还有一个补充观点,那就是这些出了名的框架包装了很多设计思想,把这些设计思想分解开,你会发现对你自己设计软件时很有帮助,而且不仅仅如此,更加学会了一种阅读代码的方式、学习其设计思想、建立创新型思维的入口的捷径,反倒比看那些什么Spring整合Hibeernate、***指南等等而学得彻底,但是这些捷径的前提是,我们必须破除一个观念就是“权威的东西一定很复杂或者深奥”的想法,或者会用就行的观念,或者直接去源代码而不去先去了解其理论模型的含义,这些不好的观念是可以把你带到书呆子或者工具狂的恶意帮手。从这篇文章开始,我将细细的分析sp
4、ring源代码,我大可以去分析什么Hibernate、Struts等等这些东西,但是我要说我只是拿Spring作为特例来做分析,并不是最终目的,最终目的是为了和大家探讨如下几个问题:1)如何做设计前的分析2)如何利用好现有的知识系统3)如何对待各种设计理念4)如果学好和用好工具软件5)如何学好技术等等,而且在此中最大可能性的解释共通理念、技术的重要性,如何能做到触类旁通等等。所以这系列的文章绝对不是一个什么指南,或者就是为了分析源代码而分析的文章。开始之前,我先要照顾一下初学者,什么是Spring?(你可以直接到官方网站上去查,不过这里还是给
5、个定义,作为Spring的整体概念,这个整体概念将被各种子概念解释,各种子概念将被实际的实现解释)Spring提供对象关系解耦的能力,又能使各个松散耦合的对象关联起来实现一个系统的功能,我这里值的系统也是一个整体观念,具体的可能是一个应用层组件系统,也可能就是一个组件,它并且提供对一个对象本身声明周期的管理。好了,这好像是一个很学究的定义,其实上面这个定义还可以翻译成:把一个系统的关注点分离(对象或其他什么东西的关系解耦),然后再让他们协调起来干一个明确目标的事情.这样来讲可能是看起来有些矛盾和抽象了,其实我们可以观察一下周围的物件,比如电视
6、机,电视机每个零件都是独立的,比如电子管,这个电子管没有被组装到这个电视机中之前谁也不知道它的作用,还可能装到一个手表里也说不定,所以它的独立的,高内聚低耦合的,然而在设计师的“设计“下,把这些互相独立的零件组装起来,来干电视机应该干的事情,而这些独立的零件,又是可以替换的,坏了或者升级都要替换掉,所以Spring这个框架解释了软件设计中最最朴素的也是最最本质的问题那就是对一个概念的关注点的分离或者分层,然后还要使其结合起来实现一个整体的目标!以上看起来很抽象,那么我们先用一个如何使用Spring的简单代码示例来说明问题:设计一个功能(略)1
7、)实现各个独立的类2)写配置文件3)部署再看看客户程序如何使用这个功能:NewFileSystemXmlApplicationContext(“C:beans.xml).getBean();看到了吧,一个功能(整体概念)被分解了,每一个被装配的对象都是可以通过外部配置文件替换的,但是又是一个整体,对立而统一,你会发现每个对象(类的实例)都是可以独立存在的,也可以被装备到其他的应用中,并且可以脱离整体而进行单独测试,这一切带来的好处都是基于上面那么多论述的理由而来的!如此简单,如此优美。接下来我们来看看Spring的核心实现:IOC和AOP.
8、(切忌不可被名词或者什么概念吓倒,很多名词都是在使用隐喻的办法说明一个抽象的概念,是为了离你近一些,明白一些,比如IOC,控制反转,控制是隐喻,反转也是隐喻)一,I
此文档下载收益归作者所有