顾名而思义---深入理解spring中IOC的概念
在学习Spring框架的过程中,大家都会遇到IOC(Inverse of Control)的概念,翻译成中文,即是控制反转的意思。事实上笔者在第一次接触到这一概念的时候,也是一头雾水,怎么控制?怎么反转?
当然,从字面上理解这一概念,会陷入到咬文爵字,最后顶多是知其然而不知其所以然的怪圈,要想深入的理解IOC的概念,还需要理解这一运行机制的原理以及达到的目的。
以下部分分为分析和实验
分析
我们可以将Spring理解成一个大工厂,可以将所有对象创建和依赖关系的维护,都交给Spring管理。既然是工厂,那么总要生产工具的,而Spring工厂就是用于生成bean。
下面来分析一个需求,要new一个对象,并且调用它的方法,我们如何处理?
和初接触Java的朋友想法一样,我们使用一个类,直接new一个对象,调用它的方法即可。这种情况下,创建对象的权限由开发者手动控制(Control)。
而在spring中,将由Spring创建对象实例,那么这个过程就是IOC:将创建对象的权限(Control)反转(Inverse)给了spring。因此之后我们需要实例化对象时,从Spring中获得即可。
实验
1.导入jar包以及依赖。
2.编写目标类和接口
a)接口
b)实现类
3.编写配置文件
bean标签中有两个字段,其中:
Class:需要创建实例的全限定类名。既然需要Spring帮我们生产对象,那我们必须提前让Spring知道类的信息,因为这个类以后要交给Spring控制,即将这个类的控制权限(Control)反转(Inverse)给了Spring。
Id:以后我们从Spring容器获得实例时使用的名字,可以理解为Spring为这个Bean起的别名。
4.Junit测试
测试表明,两者输出结果一样。
结束语
闻道有先后,术业有专攻。遇到问题不要灰心,觉得为什么别人能理解,我怎么理解不了。其实弄懂了原理后,一切就水到渠成了。这种情况下,多花点时间也是值得的了!