1. 程式人生 > >Spring加載xml配置文件的方式 ApplicationContext

Spring加載xml配置文件的方式 ApplicationContext

ssi tails 同時 etc pat uil 情況下 files 實例化

大家都知道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