先介绍两个概念
- DI(Dependency injection)依赖注入:在运行期间由外部容器动态地将依赖对象注入到组件中
- Ioc(Inversion of control)控制反转:应用本身不负责依赖对象的创建于维护,依赖对象的创建于维护是由外部容器负责的。这样控制权就由应用转给了外部容器,控制权的转移即所谓的控制反转。
Spring是一个工厂,拥有一个IOC容器
Bean的概念:由IOC管理的对象我们就叫他Bean,Bean是由Spring容器初始化、装配 及管理的对象。
BeanFactory接口
BeanFactory提供了IOC容器最基本的功能,ApplicationContext扩展了BeanFactory,还提供了与Spring AOP继承、国际化处理、时间传播及提供不同层次的context实现(如针对web应用的WebApplicaitonContext)
- XmlBeanFactory:BeanFactory的实现,提供基本的Ioc容器功能,可以从classpath或者文件系统获取资源
- File file = new File(“fileSystemConfig.xml”);
Resource resource = new FileSystemResource(file);
BeanFactory beanFactory = new XmlBeanFactory(resource); - Resource resource = new ClassPathResource(“classpath.xml”);
BeanFactory beanFactory = new XmlBeanFactory(resource);
- File file = new File(“fileSystemConfig.xml”);
- ClassPathXmlApplicationContext : ApplicationContext实现,从classpath获取配置文件。
BeanFactory beanFactory =new ClassPathXmlApplicationContext(“classpath.xml”); - FileSystemXmlApplicationContext : ApplicationContext实现,从文件系统获取配置文件
BeanFactory beanFactory =new FileSystemXmlApplicationContext(“fileSystemConfig.xml”);
ApplicationContext接口获取Bean方法简介
• Object getBean(String name)
根据名称返回一个Bean,客户端需要自己进行类型转换;
• T getBean(String name, Class<T> requiredType)
根据名称和指定的类型返回一个Bean,客户端无需自己进行类型转换,如果类型转换失败,容器抛出异常;
• T getBean(Class<T> requiredType)
根据指定的类型返回一个Bean,客户端无需自己进行类型转换,如果没有或有多于一个Bean存在容器将抛出异常;
• Map<String, T> getBeansOfType(Class<T> type)
根据指定的类型返回一个键值为名字和值为Bean对象的 Map,如果没有Bean对象存在则返回空的Map。