[关闭]
@yulongsun 2018-06-28T04:51:46.000000Z 字数 1327 阅读 713

SpringIOC分析系列 - 获取Bean过程解析

SpringIOC分析系列


1、获取Bean()流程

题目:Spring的两大容器ApplicationContext和BeanFactory的区别?


2、测试用例

1、BeanFactory获取Bean()

  1. @Test
  2. public void testBeanFactoryCreateBean() {
  3. ClassPathResource resource = new ClassPathResource("spring-bean.xml");
  4. XmlBeanFactory factory = new XmlBeanFactory(resource);
  5. //
  6. System.out.println("begin get bean.");
  7. factory.getBean("bean");
  8. System.out.println("end get bean.");
  9. }

日志
testBeanFactoryCreateBean

2、 ApplicationContext获取Bean()

  1. @Test
  2. public void testApplicationContextCreateBean() {
  3. ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-bean.xml");
  4. //
  5. System.out.println("begin get bean.");
  6. context.getBean("bean");
  7. System.out.println("end get bean.");
  8. }

日志
testApplicationContextCreateBean


3、源码执行流程

源码执行流程

1、ClassPathXmlApplicationContext#refresh()
ClassPathXmlApplicationContext#refresh()

2、AbstractApplicationContext#refresh()
AbstractApplicationContext#refresh()

3、AbstractApplicationContext#refresh()#finishBeanFactoryInitialization()

AbstractApplicationContext#refresh()#finishBeanFactoryInitialization()

4、BeanFactory#preInstantiateSingletons()#getBean()
BeanFactory#preInstantiateSingletons()#getBean()

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注