Spring最基础的部分就是IOC,对IOC的理解程度从某个方面代表着你对Spring 的理解程度,看了网上的一些面试题,针对Spring IOC相关的重点是下面几个:
1、Spring中Bean 的生命周期是怎么样的?
2、Spring IOC是如何实现的,如何加载Bean,如何创建单例Bean?
3、BeanFactory和ApplicationContext之间的关系?
4、BeanFactory和FactoryBean之间的关系?
5、Spring Bean有哪些扩展点?
下面试着对上述几个问题做一下回答。
1、Spring中Bean的生命周期从大方面讲是定义创建实例——》初始化——》使用——》销毁,Spring在初始化后BeanFactory实例化后,就加载Bean定义(xml配置、注解或Java配置文件)配置,依次生成每个类对应Bean的单例对象,然后填充对象属性(包括注入依赖对象,此时若依赖对象还没创建,会尝试先创建并初始化依赖Bean对象后再继续当前bean实例的初始化),然后开始bean对象的初始化,此处用户可以通过@PostConstruct、继承InitializingBean类或指定init-method的方法自定义自己的初始化方法(如果上面上个方法同时存在,会以@PostConstruct、继承InitializingBean类或指定init-method方法的次序依次执行)。注意:@PostConstruct能起作用,必须在bean配置前启用注解,可以通过配置<context:annotation-config/>或<context:component-scan base-package="com.imooc.service" />实现。
2、简单说IOC的实现是依赖注入。具体参考:Spring源码阅读——Bean的加载和获取过程
3、Spring中ApplicationContext和beanfactory区别 - CSDN博客