標籤:factor 派生 使用 java 執行個體化 ext app -- 記憶體
大家都知道Java讀普通檔案是通過Basic I/O 中的InputStream、OutStream、Reader、Writer 等實現的。在spring 架構中,它是怎樣識別xml這個設定檔的呢?
這就要靠IoC容器的兩個介面BeanFactory 和ApplicationContext:
BeanFactory (介面)
|--------XmlBeanFactory(實作類別)
ApplicationContext (介面)
|-------- ClassPathXmlApplicationContext(實作類別)
|---------FileSystemXmlApplicationContext(實作類別)
|---------XmlWebApplicationContext(實作類別)
BeanFactory是一個介面,Spring使用它來執行個體化、配置和管理對象,它裡面有一個getBean()方法,只提供了spring最基礎的特徵,一般使用在低記憶體的情況下,如Applet。一般的spring項目用它的衍生類別ApplicationContext,這個類會自動解析我們配置的xml檔案,然後根據配置的bean來new對象,將new好的對象放進一個Map中,鍵是bean的id,值就是new的對象。
1. 編譯路徑ClassPathXmlApplicationContext來載入xml檔案(我們入門篇中的例子http://blog.csdn.net/shymi1991/article/details/48085955 )
這種方式xml檔案必須在項目的build path裡面,一般用classpath:作為首碼,也可以省略
1)/src目錄下
ApplicationContext factory=new ClassPathXmlApplicationContext("classpath:appcontext.xml");
ApplicationContext factory=new ClassPathXmlApplicationContext("appcontext.xml");
2)/ src/conf 目錄下的
ApplicationContext factory=new ClassPathXmlApplicationContext("conf/appcontext.xml");
3)同時載入多個xml檔案
ApplicationContext factory=new ClassPathXmlApplicationContext(new String[] {"bean1.xml","bean2.xml"});
2.檔案系統的路徑
xml檔案的絕對路徑,一般用file:作為首碼,也可以省略
ApplicationContext factory=new FileSystemXmlApplicationContext("file:G:/Test/src/appcontext.xml");
ApplicationContext factory=new FileSystemXmlApplicationContext("G:/Test/src/appcontext.xml");
3. XmlWebApplicationContext是專為Web工程定製的
ServletContext servletContext = request.getSession().getServletContext();
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext );
Spring載入xml設定檔的方式 ApplicationContext