很早之前就有看过Spring源码,当时都说源码非常优秀,需要多看看,学习一下。那个时候,一看到代码那么多,都不知道
从哪里开始阅读。最近在github上看了一些简易版的类似Spring源码,对整个框架有了一个整体的认识,再来阅读源码就简单了很
多。结合书籍,对Spring有了进一步的了解。
Spring里面两个核心的概念就是IOC和AOP,分别是控制反转和面向切面编程两个概念。IOC也叫依赖注入,其主要的作用就是
对象的创建交给框架来做了,框架将对象创建好之后放入容器中,需要的时候直接从容器中拿就好了。这样的好处就是对象之间解耦了
,以前我都不是很理解,怎么就对象解耦了呢?这是因为,以往没有Spring框架的时候,我们会有很多的对象创建,到处都是new,这
样一系列对象在完成一项功能的时候,难免会有对象之间的依赖关系,就会耦合在一起。现在对象的创建由框架来实现了,这种依赖关
系就弱了很多。实现IOC的原理,主要是利用jdk的反射机制,通过类的名字来创建对象。Spring在实现ioc的时候,一系列的流程就是
读取配置文件、解析配置文件、对象的创建和注册。Resource系列的类实现配置文件的读取,Definition系列的类定义了类的数据模型
,Factory系列的类负责对象的创建,Reader系列的类负责对类定义的解析,大致是这样的。在创建对象的时候,面对的一些问题有如何
解决循环依赖问题等。
AOP面向切面编程,主要是解决这样的一个问题,如果我的程序已经写好了,但我想在不修改原来的代码的情况下,在这个方
法前或者后面添加一些功能,或者有很多地方都需要添加一些功能相同的代码,比如事物。这个时候就可以使用AOP来实现了,简单
。AOP的实现主要依赖aspectJ和jdk的动态代理功能。
通过自己写博客,发表之后会看到很多类似的优秀博客。刚刚看到了一个,下面给出链接,以便后面学习看
http://blog.csdn.net/xiamizy/article/details/39178679
2018年1月28日