这两天看了spring关于IOC容器一章内容,看完之后脑袋简直乱成一团,很多专业名词都不懂什么意思,完了之后我还是不懂到底什么是IOC控制反转以及依赖注入!虽然我结合了自己公司的项目去看了一下spring的配置,并且把自己搭建的spring框架错误也解决了,但是我还是不懂,什么是IOC控制反转,什么是依赖注入呢?
随后我在网上找了一些资料,大致的意思我算是给搞清了70%,现在写下自己对这两者的理解,假如还有更新的认识,会继续更新这篇博文。
IOC控制反转:在原来调用者要调用一个对象的时候,调用者就需要给被调用者创建对象,然后用了spring之后,调用者不需要给被调用创建对象了,这些工作全部交给了spring,这个就是IOC控制反转。
依赖注入:何为依赖?spring对依赖的理解是两者的之后的关系,比如A调用B,则A对B有依赖关系。何为注入呢?比如我使用@Repository把一个UserDao设为一个bean,当我在另外一个类需要调用它的时候,我就需要@Autowire去bean容器中查找UserDao类型的bean,假如找到了,则直接注入到调用类里面,被调用者是自动注入进去的;这样的好处是什么呢?下面我用一个例子来说一下:
原来很古老的年代,樵夫需要一个斧头的时候需要自己去打造一个斧头。这就相当于原来我们要调用一个类的时候,我们需要为其创建一个对象才能使用。
到了近代,樵夫需要一个斧头的时候,他需要去特别的工厂挑选自己想要的斧头,他不需要自己做了,有工厂代工为它创建一个斧头。这就是工厂模式,
到了现在,樵夫需要一个斧头的时候,他只需要坐在家里告诉别人我需要一个斧头,就能直接拥有一个斧头,并不需要去工厂里面挑选了,这就是IOC容器的整个意思。调用者需要一个对象的时候,只需要一个注解,就可以获得它需要的那个对象,spring直接去bean容器中为它找到这个对象,让它们之间建立连接。
我所理解大致这些,应该也有理解错误的地方,日后我有更多的理解了,会修改博文的。