之前面试支付宝的时候面试官问了spring 的ioc容器,以及依赖注入的好处,现在都记得他问道,为什么非使用依赖注入,我要用到一个其他对象时,new一个怎么就不好了。当时没答上来真的觉得自己学艺不精,感到丢人。
现在读了spring源码感觉可以回答一二
比new一个对象好的原因有几点:
1.在程序中如果不是必须同一个对象多个实例时,也就是一个对象只是在某个地方使用一下时new一下,依赖注入就比new一个对象更好,因为new一个对象必选面临频繁创建和销毁内存实例对象的问题。而ioc管控下实例对象都是单例模式的,就是在程序运行时始终只有一个对象实例生成不需要频繁创建和销毁,也因为在内存中只有一个实例对象,减少内存开销。
2 还有一个更加重要的原因:在没有spring这个beanFactory之前,我们都是直接通过new来实例化各种对象,现在各种对象bean的生产都是通过beanFactory来实例化的,这样的话,spring这个beanFactory就可以在实例化bean的过程中,做一些小动作——在实例化bean的各个阶段进行一些额外的处理,也就是说beanFactory会在bean的生命周期的各个阶段中对bean进行各种管理,并且spring将这些阶段通过各种接口暴露给我们,让我们可以对bean进行各种处理,我们只要让bean实现对应的接口,那么spring就会在bean的生命周期调用我们实现的接口来处理该bean.
为什么使用ioc容器比new对象好
最新推荐文章于 2024-08-06 23:51:38 发布