-
Spring的IoC容器其实范围比前面说的IoC Service Provider__要广__,它还包括了AOP等其他内容
-
Spring提供了两种容器
(1)BeanFactory
1° 默认采用__懒加载__策略:当客户端需要访问某个对象时,才进行初始化和依赖注入
2° 容器启动速度较快
3° 所需资源较少
(2) ApplicationContext
1° ApplicationContext间接继承了BeanFactory,同时还继承了其他几个接口,所以ApplicationContext在BeanFactory的基础上构建,拥有__更强大的功能__
2° 默认采用__直接加载__策略:容器启动前,就完成所有被管理对象的初始化和依赖注入操作
3° 容器启动速度慢,占用资源多,但是提供的功能丰富
所以,BeanFactory其实已经可以完成IoC Service Provider的所有功能了,ApplicationContext是BeanFactory的高级版本
-
BeanFactory接口
package org.springframework.beans.factory; public interface BeanFactory { String FACTORY_BEAN_PREFIX = "&"; Object getBean(String name) throws BeansException; <T> T getBean(String name, Class<T> requiredType) throws BeansException; <T> T getBean(Class<T> requiredType) throws BeansException; Object getBean(String name, Object... args) throws BeansException; boolean containsBean(String name); // 是否存在 boolean isSingleton(String name) throws NoSuchBeanDefinitionException;// 是否为单实例 boolean isPrototype(String name) throws NoSuchBeanDefinitionException;// 是否为原型(多实例) boolean isTypeMatch(String name, Class<?> targetType) throws NoSuchBeanDefinitionException;// 名称、类型是否匹配 Class<?> getType(String name) throws NoSuchBeanDefinitionException; // 获取类型 String[] getAliases(String name);// 根据实例的名字获取实例的别名 }简单使用示例
BeanFactory container = newXmlBeanFactory(new ClassPathSource("config.xml")); FXNewsProvider newsProvider = (FXNewsProvider)container.getBean("djNewsProvider"); newsProvider.getAndPersistNews();
chapter04_Spring的IoC容器之BeanFactory_01_拥有BeanFactory之后的生活
最新推荐文章于 2024-08-15 09:10:52 发布
本文详细介绍了Spring框架中的两种IoC容器:BeanFactory和ApplicationContext。BeanFactory采用懒加载策略,启动速度快;而ApplicationContext则在前者基础上提供更强大功能,并采用直接加载策略,虽然启动较慢但功能更全面。
1019

被折叠的 条评论
为什么被折叠?



