咱們在最開始接觸spring的時候,看到很多書spring入門的例子以下spring
ApplicationContext atx = new ClassPathXmlApplicationContext("application.xml"); atx.getBean("benefitService");
上面這個例子第一行是表示如何初始化一個spring 容器,第二表示如何從一個已經初始化後的spring容器中按bean id獲得這個bean, 絕大部分spring應用中,bean都是按業務模板和層次分別配置在不一樣的xml文件中, spring容器根據配置的xml文件名路徑去分別解析這些xml 配置文件,生成相應的BeanDefinition 實例,一個bean對應一個BeanDefinition, 解析完成bean 的xml配置文件以後,spring容器就開始初始bean,大概的過程以下:
這篇文章主要分析第一個階段,即xml配置文件 ---->BeanDefinition這個過程,首先根據IDE工具看一下ClassPathXmlApplicationContext 這個類的繼承關係:
經過這個繼續關係,發現ClassPathXmlApplicationContext也是間接實現了ResourceLoader這個接口, ResourceLoader的實現類主要用於根據給定的資源文件地址返回對應的Resource,在本例中,這個資源文件就是application.xml;
接着往下看app