红 石 那一年

常用链接

统计

最新评论

Spring 学习笔记(二)

DI-------Bean 装配

容器可以创建组件,装配和配置组件,以及管理它们的整个生命周期。

容器是Spring框架的核心。Spring容器使用DI管理所有组成应用系统的组件。这包括在协作组件之间建立关联。而且这些对象简洁易懂,支持重用,容易被测试。

Spring提供了多种容器实现,并分为两类。
一是:Bean工厂org.springframework.beans.factory.BeanFactory接口定义,是最简单的容器,提供了基础的依赖注入支持。
二是:应用上下文org.springframework.context.ApplicationContext接口定义,建立在Bean工厂之上,提供了系统构架服务。

BeanFactory介绍

Bean工厂是一个通用的工厂,可以创建和分发各种类型的Bean.除了简单的实例化和分发应用对象以外,Bean工厂还有很多工作需要做。由于其知道应用系统中的很多对象,所以它可以在实例化这些对象的时候,创建协作对象间的关联关系。这样就把配置的负担从Bean自身及Bean的调用者中脱离出来。结果,Bean工厂分发出来的Bean都已经被配置好了,都得到了它们的关联对象,已经可以被使用了。Bean工厂还要参与到Bean的生命周期中,调用用户定义的初始化和销毁方法。

例如:

BeanFactory factory = new XmlBeanFactory(new FileSystemResource("c:/beans.xml"));

这行代码告诉Bean工厂从XML文件中读取Bean的定义信息。但是,现在Bean工厂还没有实例化Bean。Bean是被延迟载入到Bean工厂中的,就是说Bean工厂会立即把Bean定义信息载入进来,但是Bean只有在被需要的时候才能被实例化。

MyBean myBean = (MyBean) factory.getBean("myBean");

当getBean()方法被调用的时候,工厂才会实例化Bean并且使用依赖注入设置Bean的属性。

使用应用上下文介绍

表面上ApplicationContext和BeanFactory差不多。两者都是载入Bean定义信息,装配Bean,根据需要分发Bean。但是ApplicationContext提供了更多的功能:
    a.应用上下文提供了文本信息解析工具,包括对国际化的支持。
    b.应用上下文提供了载入文件资源的通用方法,如载入图片。
    c.应用上下文可以向注册为监听器的Bean发送事件。
应用上下文的三种实现:
    1.ClassPathXmlApplicationContext
    2.FileSystemXmlApplicationContext
    3.XmlWebApplicationContext

除了应用上下文提供的附加功能外,与BeanFactory另一个重要的区别是关于单实例Bean是如何被载入的。Bean工厂延迟载入所有的Bean,直到getBean()方法被调用时Bean才被创建。应用上下文则更聪明一点,它会在上下文启动后预载入所有的实例Bean。通过预载入单实例Bean,确保当你需要的时候它们已经准备好了,你的应用不需要等待它们被创建。


posted on 2008-09-10 16:30 红石 阅读(129) 评论(0)  编辑  收藏 所属分类: spring