【Java面试题】谈谈你对Spring IOC 和DI的理解?
一个工作4年的Java程序员,Spring都用了4年了,竟然连Spring里面这么基础的问题都回答不好。 还以为像3~4年前一样,随便准备一下就可以拿到一个薪资不错的Offer。 同学们,这种好日子已经过去了,对于Java程序员来说,未来找工作一定会越来越难。 今天分享的面试提示:谈谈你对Spring IOC和DI的理解。 我把高手的回答整理到了一个10W字的面试文档里面,大家可以点击文章尾端名片扫描二维码领取。 下面看看高手的回答。
高手:
首先,Spring IOC,全称控制反转(Inversion of Control)。
在传统的Java程序开发中,我们只能通过new关键字来创建对象,这种导致程序中对象的依赖关系比较复杂,耦合度较高。
而IOC的主要作用是实现了对象的管理,也就是我们把设计好的对象交给了IOC容器控制,然后在需要用到目标对象的时候,直接从容器中去获取。
有了IOC容器来管理Bean以后,相当于把对象的创建和查找依赖对象的控制权交给了容器,这种设计理念使得对象与对象之间是一种松耦合状态,极大提升了程序的灵活性以及功能的复用性。
然后,DI表示依赖注入,也就是对于IOC容器中管理的Bean,如果Bean之间存在依赖关系,那么IOC容器需要自动实现依赖对象的实例注入,通常有三种方法来描述Bean之间的依赖关系。
- 接口注入
- setter注入
- 构造器注入
另外,为了更加灵活的实现Bean实例的依赖注入,Spring还提供了@Resource和@Autowired这两个注解。
分别是根据bean的id和bean的类型来实现依赖注入。
总结
这个问题一般考察1~3年左右的程序员。
基础的考察本身就是为了确保求职者对常用技术的理解程度。
避免在开发过程中写出一些莫名其妙的bug。
未来建议大家可以深度的去研究一下Spring的源码,它的代码设计以及对面向对象的使用达到了炉火纯青的地步,有助于提升我们的编码能力。
另外,我将所有Java面试系列制作成了完整的面试文档。它的便捷之处在于,可以通过检索的方式,找到你想要的面试题,目前已经更新180期,总计超过15W字!
【想领取面试文档的小伙伴可以点击文章底部名片无套路免费赠送给大家!】
需要高手面试文档面试文档的小伙伴可以扫描下方二维码 ↓↓↓↓↓↓↓↓↓↓↓↓↓
上一篇:
Java基础知识总结(2021版)
下一篇:
SpringBoot面试题及答案整理