1.概述:
Bean工廠(com.springframework.beans.factory.BeanFactory)是spring框架最核心的接口,它提供了高級Ioc的配置機制;BeanFactory使管理不同類型的java對象成爲 可能;
應用上下文(com.springframework.context.ApplicationContext)是建立在BeanFactory基礎之上,提供了更多面嚮應用的功能;
我們一般稱BeanFactory爲IOC容器,而ApplicationContext爲應用上下文;
2.BeanFactory:
一個工廠類,用來管理java bean;
spring爲BeanFactory提供了多種實現,最常用的是XmlBeanFactory.下面使用xml來裝配beans;
package mainTest;
import java.io.IOException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import beans.Car;
public class ResourceLoaderTest {
public static void main(String[] args) throws IOException {
ResourcePatternResolver resolver =new PathMatchingResourcePatternResolver();
Resource res[]=resolver.getResources("classpath*:**/bean.xml");
//BeanFactory bean=new XmlBeanFactory(res);
for(Resource s :res){
BeanFactory bean=new XmlBeanFactory(s);
Car car=bean.getBean("car",Car.class);
System.out.println(car.toString());
}
// Car car=bean.getBean("car",Car.class);
// System.out.println(car.toString());
}
}
注意:在初始化BeanFactory時,必須爲其提供一種日誌框架,這樣啓動Spring時纔不會報錯;
4.ApplicationContext:
ApplicationContext的主要實現類是ClassPathXmlApplicationContext和FileSystemXmlApplicationContext;前者是默認加載配置文件,後者默認從文件系統中裝載配置文件;
package mainTest; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; import beans.Car; public class ApplicationContextTest { public static void main(String[] args) { //默認加載路徑 //ApplicationContext context=new ClassPathXmlApplicationContext("classpath*:**/bean.xml"); //文件系統裝配加載路徑 ApplicationContext context=new FileSystemXmlApplicationContext(new String[]{"D:/workspace/springLearn/src/config1/bean.xml","D:/workspace/springLearn/src/config/bean.xml"}); Car car=(Car)context.getBean("car"); System.out.println(car.toString()); Car car2=(Car)context.getBean("car1"); System.out.println(car2.toString()); } }
5.WebApplicationContext:
專門爲Web應用準備的,它允許從相對於Web根目錄路徑裝載配置文件完成初始化工作;從WebApplicationContext中可以獲取ServletContext的引用,整個Web應用上下文對象將作爲屬性放置到ServletContext中,以便Web環境可以訪問Spring應用上下文;