BeanFactory的对象注册与依赖绑定方式。(读书笔记)

Spring的IoC容器之BeanFactory
1, Spring提供了两种容器类型:BeanFactory和ApplicationContext
》BeanFactory。基础类型IOC容器,提供完整的Ioc服务支持。如果没有特殊指定,默认采用延迟初始化策略(lazy-load)。只有当客户端对象需要访问容器中某个受管对象的时候,才对该受管对象进行初始化以及依赖注入操作。所以,相对来说,BeanFactory是比较适合的IoC容器选择。
》ApplicationContext。ApplicationContext在BeanFactory的基础上构建,是相对比较高级的容器实现,除了拥有BeanFactory的所有支持,ApplicationContext还提供了其他高级特性。 如:事件发布、国际化信息支持等。ApplicationContext所管理的对象,在该类型容器启动之后,默认全部初始化并绑定完成。所以 相对于Beanfactory来说,ApplicationContext要求更多的系统资源,同时,因为启动时就完成所有初始化,容器启动时间较之BeanFactory也会长一些。在哪些系统资源充足,并且要求更多功能的场景中,ApplicationContext类型的容器是比较适合的选择。
注意: ApplicationContext间接继承自BeanFactory,所以说它是构建于BeanFactory之上 的IoC容器。 、另外,在没有特殊指明的情况下,以BeanFactory为中心所讲述的内容同样适用于ApplicationContext。
BeanFactory,就是产生Bean的工厂。BeanFactory可以完成作为IoC Service Provider 的所有职责,包括业务对象的注册和对象间依赖关系的绑定。
2,BeanFactory的对象注册与以来绑定方式。
》直接编码方式

》外部配置文件方式
他支持两种配置文件格式:Properties文件格式和XML文件格式。通常情况下,需要根据不同的外部配置文件格式,给出相应的BeanDefinitionReader实现类,由BeanDefinitionReader的响应实现类负责将相应的配置文件内容读取并映射到BeanDefinition,然后将映射后的BeanDefinition注册到一个BeanDefinitionRegistry,之后,BeanDefinitionRegistry即完成Bean的注册和加载。其中大部分工作(包括解析文件格式、装配BeanDefinition之类的工作)是由BeanDefinitionReader的响应实现类来做的,过程类似如下代码:
BeanDefinitionRegistry beanRegistry=<某个BeanDefinitionRegistry实现类,通常为DefaultListableBeanFactory>;
BeanDefinitionReader beanDefinitionReader=new BeanDefinitionReaderImpl(beanRegistry);
beanDefinitionReader.loadBeanDefinitions("配置文件路径");
//这样我们就可以取得一个可用的BeanDefinitionRegistry实例
>Properties配置格式的加载
Spring提供了org.springframework.beans.factory.support.PropertiesBeanDefinition- Reader类用于Properties格式配置文件的加载,所以,我们不用自己去实现BeanDefinitionReader, 只要根据该类的读取规则,提供相应的配置文件即。
>XML配置格式的加载
XML配置格式是Spring支持完整,功能强大的表达方式。当然,一方面这得益于XML良好的 语意表达能力;另一方面,就是Spring框架从开始就自始至终保持XML配置加载的统一性。同Properties 配置加载类似,现在只不过是转而使用XML而已。Spring 2.x之前,XML配置文件采用DTD(Document Type Definition)实现文档的格式约束。2.x之后,引入了基于XSD(XML Schema Definition)的约束 方式。不过,原来的基于DTD的方式依然有效,因为从DTD转向XSD只是“形式”上的转变,所以, 后面的大部分讲解还会沿用DTD的方式,只有必要时才会给出特殊说明。 与为Properties配置文件格式提供PropertiesBeanDefinitionReader相对应,Spring同样为XML 格式的配置文件提供了现成的BeanDefinitionReader实现,即XmlBeanDefinitionReader。 XmlBeanDefinitionReader负责读取Spring指定格式的XML配置文件并解析,之后将解析后的文件内 容映射到相应的BeanDefinition,并加载到相应的BeanDefinitionRegistry中(在这里是Default- ListableBeanFactory)。这时,整个BeanFactory就可以放给客户端使用了。 除了提供XmlBeanDefinitionReader用于XML格式配置文件的加载,Spring还在Default- ListableBeanFactory的基础上构建了简化XML格式配置加载的XmlBeanFactory实现。
>注解方式
~在Spring 2.5发布之前,Spring框架并没有正式支持基于注解方式的依赖注入
~Spring2.5发布的基于注解的依赖注入方式,如果不使用classpath-scanning功能的话,仍然部分依赖于“基于XML配置文件”的依赖注入
如果需要使用注解方式注入所需要的依赖,现在可以使用@Autowired以及@Component对相关类进行标记。@Autowired是这里的主角,它的存在将告知Spring容器需要为当前对象注入哪些依赖对象。而 @Component则是配合Spring 2.5中新的classpath-scanning功能使用的。现在我们只要再向Spring的配置 文件中增加一个“触发器”,使用@Autowired和@Component标注的类就能获得依赖对象的注入了
<context:component-scan base-package="cn.spring21.project.base.package"/>
<context:component-scan/>会到指定的包(package)下面扫描标注有@Component的类,如果 找到,则将它们添加到容器进行管理,并根据它们所标注的@Autowired为这些类注入符合条件的依 赖对象。
注意:注解是Java5之后才引入的,spring的注解只适用于spring2.5以及java5之后。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值