在Spring IOC容器读取 Bean 配置、创建 Bean 实例之前必须对它进行实例化,只有进行实例化后才能从IOC容器获取 Bean 实例并使用;
Spring 提供了两种类型的 IOC 容器实现
- BeanFactory :IOC的基本实现;
- ApplicationContext:提供了更多高级特性,是BeanFactory的子接口;
- BeanFactory 是 Spring 的基础设施,面向 Spring 本身;
- ApplicationContext 面向使用 Spring 框架的开发者
几乎所有的应用场合都直接使用 ApplicationContext 而非底层的BeanFactory
- 无论使用何种方式,配置方式都是相同的
ApplicationContext
- ConfigurableApplicationContext:
扩展于ApplicationContext,新增两个主要方法:refresh()、close()
ApplicationContext具有启动、刷新和关闭上下文的能力 - ApplicationContext的主要实现类:
- ClassPathXmlApplicationContext:从类路径下加载配置文件
- FileSystemXmlApplicationContext:从文件系统加载配置文件
- WebApplicationContext:专门为web应用而准备的,它允许从相对于 WEB 根目录的路径中完成初始化工作
从IOC获取Bean
调用ApplicationContext的getBean()获取
ApplicationContext共重载了四次getBean()方法;
- getBean(String)
通过id获取
返回一个Object类型的数据
ApplicationContext ac = new ClassPathXmlApplicationContext("BeanXml.xml");
Dog dog = (Dog) ac.getBean("id");
- getBean(Class<T>)
通过类型获取
返回一个该类型的数据
ApplicationContext ac = new ClassPathXmlApplicationContext("BeanXml.xml");
Dog dog = ac.getBean(Dog.Class);
- getBean(String, Class<T>)
通过类型和id同时获取
返回一个该类型的数据
ApplicationContext ac = new ClassPathXmlApplicationContext("BeanXml.xml");
Dog dog = ac.getBean("id",Dog.Class);
- getBean(String,Object)
不常用
网友评论