首页 > 其他分享 >探究spring中如何如何从ioc中拿到对象,ioc中都存了什么

探究spring中如何如何从ioc中拿到对象,ioc中都存了什么

时间:2024-08-03 20:41:23浏览次数:13  
标签:beanFactory spring getBean 如何 探究 单例 ioc

引言

        ApplicationContext ioc = new ClassPathXmlApplicationContext("beans.xml");
        Monster monster01 = (Monster)ioc.getBean("monster01");

这是我们接触spring时接触的第一行代码,我们只是习惯性的通过ioc.getBean获取我们需要的对象,但是你有没有想过在这个api调用的背后到底发生了什么?现在就让我们一起去解刨一下ioc吧!

bug探究发生了什么

我在创建ioc容器的地方放置了一个断点,但是要在继续往下执行一行才可以看到我们需要的ioc。
image

image
我们看到ioc中有beanFactory,而且beanFactory里存放很多有关beans.xml配置的信息还用单例的类
image

beanDefinitionNames(beanFactory中的)

image

beanDefinitionMap(beanFactory中的)

image

singletonObjects

这里面存的是单例的对象,当getBean时,先去eanDefinitionMap查找,看看是否为单例的,若为单例的就去singletonObjects中获取,若不是单例的就依照配置信息反射生成。
image

标签:beanFactory,spring,getBean,如何,探究,单例,ioc
From: https://www.cnblogs.com/yousuobutong/p/18340888

相关文章