那些年,我们一起追的Spring

Posted by ZY on August 11, 2018

学无止境,但仍需及时总结。

自去年开始写作以来,写了一些关于Spring的文章,今天将它们汇总起来,一方面方便大家阅读,另一方面,也是一次小的复盘总结。

IOC

首先是Spring的IOC,也就是控制反转。

控制反转,简单说,就是你不用再自己去new对象啦,Spring已经帮你new好了,而且还配送上门。

有同学说,这不就是工厂模式吗?

的确,IOC用到了工厂模式,但IOC绝不仅仅是工厂模式。

作为一个框架,Spring必须考虑,如何最大程度的简化用户的工作:

  • 如何定义一个Bean
  • 如何将一个Bean注入另一个Bean
  • 如何在Bean的生命周期里,提供各种“钩子”入口,满足用户的定制需求

下面是之前写过的关于IOC的文章:

桥梁 —— BeanPostProcessor

很多书在讲Spring的时候,往往讲完IOC,就讲AOP了,似乎AOP和IOC是两个互不相干的功能。

实际上,虽然AOP和IOC确实是两个不同的领域,但是既然是Spring AOP,那么AOP创建的代理对象,也必须交给Spring容器去管理,所以也就有了这篇文章:BeanPostProcessor —— 连接Spring IOC和AOP的桥梁

这篇文章里,你会看到,Spring在Bean初始化的过程中,留下一些“钩子”入口的重要性,同时可以了解到,AOP是如何利用这个钩子,把代理对象放到Springe容器的。

Spring事务和AOP

是的,我并没有写直接以AOP为主题的文章,一方面是懒,另一方面也是因为直接讲AOP,会比较枯燥。

我选择的是去讲Spring源码里面,一个利用了IOC和AOP来搭建的模块——Spring Transaction

通过对Spring事务的讲解,我们不仅仅学到了如何使用Spring事务,还加深了对IOC的理解,并且看到了AOP的实际应用,一举三得:

尾声

当然,Spring还有很多高大上的功能,然而,这些个高大上的功能,都是建立在IOC和AOP的基础上的,诸如上面讲到过的Transaction、还有DAO support、Spring MVC、对JavaEE应用的集成(JMS/Cache/Email)等等。

所以你会发现,不管是Spring官方文档,或者是Spring的书籍,前面两章,无一例外,都是IOC和AOP。

有了IOC和AOP的基础,再去学习其他模块,就会轻松很多,更容易看出其他模块的精髓。

最后再推荐一些学习资料。

其实学习资料这些东西,对于一项成熟的、有强大生态的技术来说,无非就那几样:

1、几本好书
对于Spring,推荐这两本书:《Spring实战》 + 《Spring揭秘》

就像之前在初学Spring有没有适合的书? - Javdroider Hong的回答 - 知乎说的:

第一本告诉你怎么用Spring

第二本给你简单展示如何用的同时,还告诉你Spring是怎么实现的

两者一起,让你知其然并知其所以然,绝配。

2、官方文档
书籍是作者学习吸收后的成果,只能算是二手学习资料。

官方文档才是一手的学习资料,最靠近知识的源头。由于前面你已经看了书籍,可以说常用的80%的功能你都了解了,剩下的20%,也许就得从官方文档里去挖掘了。

当然,英文好的同学,上来直接看官方文档也是可以的 (〃’▽’〃)

3、搜索引擎
推荐两个搜索引擎,1、谷歌 2、知乎

学习的乐趣在于不断提问、不断发现知识盲点,然后再不断的去搜索和解决问题。

以上,希望对你学习Spring,能有所帮助。