spring 容器 分为二种
Bean 工厂(beanFactory 接口定义)
最为简单的容器,提供了基础的依赖注入支持
ApplicationContext 应用上下文: 建立在bean工厂之上,提供了系统架构服务。
如:从属性文件中读取文本信息,向有关的事件监听器发布事件。
bean 容器(低级容器)
bean 容器的实现,有好几种方式,最常用的是 org.springframework.beans.factory.xml.XmlBeanFactory,他根据XML文件中的定义装载bean
要创建XmlBeanFactory,需要传递一个io.InputStream 对象给构造函数。 InputStream对象提供XML文件给工厂。
如: BeanFactory factory = new XmlBeanFactory(new FileInputStream("beans.xml"));
bean 是被延迟加载载入到Bean工厂中的,就是说Bean工厂会立即把Bean定义信息载入进来,但是Bean只有在被需要的时候才被实例化。
从beanfactory 中获取你想要的bean只需:
MyBean mybean = (MyBean) factory.getBean("bolink");
当getbean方法被调用的时候,工厂就会实例化Bean并且注入和设置bean的属性。
ApplicationContext 上下文容器(高级容器)
ApplicationContext 相比 beanfactory 提供了更多的功能:
1、应用上下文提供了文本信息解析工具,包括国际化支持
2、应用上下文提供了文件资源的通用方法,如载入图片。
3、应用上下文可以向注册为监听器的Bean发送事件。
上下文的三个实现是经常用到的
ClassPathXmlApplicationContext:
从类路径中的XML文件载入上下文定义信息,把上下文定义文件当成类路径资源
FileSystemXmlApplicationContext
从文件系统中的XML文件载入上下文定义信息。
XmlWebApplicationContext
从web系统中的XML文件载入上下文定义信息。
如: ApplicationContext context = new FileSystemXmlApplicationContext("c:/bolink.xml");
ApplicationContext context = new ClassPathXmlApplicationContext("bolink.xml");
前者是在指定的文件下找,后者是在整个类路径中查找。