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博客
4、Spring BeanFactory與FactoryBean的區別及其各自的詳細介紹於用法