Spring FrameWork的bean載入機制
阿新 • • 發佈:2018-12-17
其實原始碼是個好東西,好到讓你理解作者的初心和想法是如何一步步實現的,例如spring,我們更習慣於拿來當應用去使用,但適當的去研究下原始碼的實現就會掌握很多幹貨。
千萬言不抵一書,梳理下spring的類載入機制,也是整理自己的思路,拿下邊的一個demo作為入口 邊擼程式碼邊整理,開始:
public static void main(String[] args) { @SuppressWarnings("resource") ApplicationContext ac = new ClassPathXmlApplicationContext("servlet-context.xml"); Demo demo = (Demo) ac.getBean("demo"); System.out.println(demo.sayHelloWorld()); }
ApplicationContext ac = new ClassPathXmlApplicationContext("servlet-context.xml");
這一行程式碼就包含了spring容器如何建立bean的內容。對,短短一行。 來看下xml檔案內容:
<beans:bean id="demo" class="com.github.bioinfo.webes.demo.Demo" scope="singleton" init-method="init"> <beans:property name="name" value=""></beans:property> </beans:bean> <beans:bean id="beanFactoryPostProcess" class="com.github.bioinfo.webes.demo.DemoBeanFactoryPostProcess"></beans:bean> <beans:bean id="beanPostProcess" class="com.github.bioinfo.webes.demo.DemoBeanPostProcess"></beans:bean>
那spring容器是如何初始化配置檔案中的bean的呢?這個是問題1,暫不解析,先分析下如上xml配置檔案中beanFactoryPostProcess及beanPostProcess(問題2)。