為什么返回的是SqlSessionFactory對象而不是SqlSessionFactoryBean
首先spring在初始化的時候會將所有創建的單例以Map<K,V>的形式放入singletonObjects,同時調用FactoryBean的getObject()將返回的對象以Map<K,V>的形式放入factoryBeanObjectCache
如{sqlSessionFactory=org.apache.ibatis.session.defaults.DefaultSqlSessionFactory@d997f9}
然后getBean的時候,spring利用getSingleton從singletonObjects獲取單例(這里是SqlSessionFactoryBean對象),判斷是否實現了FactoryBean接口,若實現了就從factoryBeanObjectCache利用beanname(這里是sqlSessionFactory)重新獲取,若未實現則返回getSingleton獲取的單例