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应用上下文;