1.新建自己的spring项目,并新建一个test
2.ClassPathXmlApplicationContext extends org.springframework.context.support.AbstractXmlApplicationContext,调用父类方法,
AbstractXmlApplicationContext中 ClassPathXmlApplicationContext方法
2.调用refresh();方法,进入AbstractApplicationContext.refresh();方法
3.进入obtainFreshBeanFactory();方法,此方法主要作用是:
1、创建BeanFactory对象
2、xml解析
3、把解析出来的xml标签封装成BeanDefinition对象
4.AbstractRefreshableApplicationContext.refreshBeanFactory();
5.进入AbstractXmlApplicationContext.loadBeanDefinitions();方法
6.字符类型的xml文件路径,转换成Resource对象,这里涉及模糊匹配,例如:classpath*:user/**/*-context.xml,主流程继续调用loadBeanDefinitions方法
7.XmlBeanDefinitionReader.doLoadBeanDefinitions();方法,有doLoadDocument();、registerBeanDefinitions();
8.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions();
9.parseDefaultElement()方法是默认标签解析,delegate.parseCustomElement(ele);方法是自定义标签解析
10.进入BeanDefinitionParserDelegate.parseBeanDefinitionElement()方法,
11.进行解析
1,创建GenericBeanDefinition对象
2, 解析bean标签属性,并设置到BeanDefinition对象中
3, 解析bean中meta标签
4,解析 bean中lookup-method标签
5, 解析bean中replaced-method标签
6, 解析beanconstructor-arg标签
7, 解析bean中property标签
相关文章: