1. 程式人生 > >Spring FrameWork的bean載入機制

Spring FrameWork的bean載入機制

其實原始碼是個好東西,好到讓你理解作者的初心和想法是如何一步步實現的,例如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)。