SSM
一个概念:工具类和框架的区别?
刚开始学习框架时,肯定都想过:框架和之前学的commons下的beanUtils之类的工具类有什么区别?就仅仅是比工具类大一点吗?
笼统地讲,框架确实可以理解为“很大很全”的工具类。但是有一点很不一样。
我们在自己的代码中调用工具类,提高开发效率。此时工具类就像钥匙,是工具,我们用它开门;
而框架呢?我们写好自己的代码被框架调用。框架就像房子,我们的代码是窗户,窗户是嵌在房子里的。
在我看来,学习框架时,心里至少要带着下面的疑问:
-
- 这个框架是负责哪一块的,用在哪一层?
- 没有它之前,前辈们如何解决,有什么缺点?
- 它的出现解决了哪些痛点?
- 它是否也有什么缺点?(这个暂时不作要求)
下面以MyBatis举例,讲讲如何学习框架才能形成自己的理解。我一直认为,学一样东西如果能形成自己的理解,至少说明你学得不糊涂。
我打算按照答题的形式,通过逐一解答上面的提问来理解MyBatis:
-
- MyBatis是负责哪一块的,用在哪一层?
MyBatis是对JDBC的封装,负责和数据库打交道,我们在dao层会用到它。
MyBatis出现之前,我们也可以用Hibernate框架,一个非常优秀的ORM框架。
-
- 没有它之前,前辈们如何解决,有什么缺点?
在MyBatis和Hibernate都没有的、更早更早之前的上古时代,我们的程序猿祖先用的是JDBC,就是“纯原生”的技术。框架说穿了,就是对这些原生技术的封装!
但是JDBC的缺点也十分明显:

所以后来我们都很少在dao层手写JDBC,而是用封装了JDBC的框架,比如Hibernate这样的ORM框架,又比如轻量而优秀的“半自动ORM框架”MyBatis。
这里顺便简单对比下Hibernate和MyBatis。因为同为dao层框架,它们总是被人拿来比较:

-
- MyBatis解决了JDBC的哪些痛点呢

按照这样自问自答式的学习方法,基本上,一遍视频撸下来,就能形成对框架的感性认识。为后期深入学习打下基础。
另外,关于SSM中的Spring,最核心的概念就两个:AOP(切面编程)和DI(依赖注入)。而DI又依赖IoC。
这里不打算详细说Spring,就简单画个图,只介绍DI和IoC。

简而言之,原先对象的创建及注入都是采取“人盯人”战术,一个咬着一个。有了Spring以后,通过IoC,所有的对象都可以从“第三方”Spring容器中得到,并由Spring注入到它应该去的地方。这种由原先的“对象管理对象”切换到“Spring管理对象”的方式,就是所谓的IoC(控制反转),因为创建、管理对象的角色反过来了,有每个对象自主管理变为Spring统一管理。
而且,只有通过IoC先让Spring创建对象后,才能进行下一步对象注入(DI),所以说DI依赖IoC。
浙公网安备 33010602011771号