Ioc 容器之 BeanFactory--10-06

spring 提供了两种容器类型:

  • BeanFactory 默认采用延迟初始化策略【lazy_load】。只有当客户端对象需要访问容器中某个受管对象的时候,才会对该受管对象进行初始化以及依赖注入的操作。所以,容器启动初期速度快,对资源有限,功能要求不是很严格的场景下,BeanFactory是比较合适的Ioc容器选择。
  • ApplicationContext 【讲到ApplicationContext 的时候具体探讨】

BeanFactory就像一个汽车工厂,从其他汽车零件厂商或者自己的零件生产部门取得汽车零件送入这个汽车生产厂,最后,只需要从生产线的终点取得成品汽车就可以了。【结合工厂模式思考】

BeanFactory的对象注册和依赖绑定的方式:

1 直接编码方式:

BeanFactory接口定义了如何访问容器内管理的bean的方法。BeanDefinitionRegistry定义了bean的注册逻辑,还有一些其他的实现负责bean的管理工作等,具体代码详见【spring揭秘P27】。

2 外部配置文件方式:

Spring的Ioc容器支持两种格式,Properties文件格式和XML格式文件。通常情况下,由BeanDefinitionReader 的相应实现类负责将配置文件的内容读取并映射到BeanDefinition,然后将映射后的BeanDefinition注册到BeanDefinitionRegistry,之后由BeanDefinitionRegistry完成bean的注册和加载。Properties文件格式和XML格式文件都是这种模式去完成读取配置的。

3 注解方式:

限制条件,spring 2.5 java 5版本及之后。通过使用@Autowired以及@Component对类进行标记,@Autowired告知spring容器需要为当前对象注入哪些依赖对象。@Component则是配合spring 2.5中的新的classpath-scanning功能使用。@Component会到指定的包下扫描标注有@Component的类,如果找到,测添加到容器进行管理,并根据他们所标注的@Autowired为这些类注入符合条件的依赖对象。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章