读书人

Spring-IOC的懂得一

发布时间: 2012-10-17 10:25:47 作者: rapoo

Spring---IOC的理解一

一,对象应用的革命

革命一(原始时代):需要怎么对象,就创建相应的对象,执行相应的功能.(这大大降低了维护性,修改时要改原码,违反开-闭原则"扩展开修改闭")

革命二(封建时代):引进了接口,实现替换原则(这样一来提高了扩展性,但是修改问题未解诀)

革命三(工业化时代):引入了工厂模式,从工厂里面取出对象。

革命四(信息化时代):Spring的引入(Don't call me,i will call you),系统将自动调用。根据读取配置文件,无需要修改源码.使"开-闭"原则得到了运用。

?

二,JavaBean

定义->创建->使用->销毁

销毁:但scope="single"时可用配置的 destroy-method=""进行销毁,而prototype时是交给Bean管理,不可以使用该方法

四,BeanFactory 与ApplicationContext的区别

BeanFactory:只有在调用getBean()时,相应的类才会被初始化

ApplicationContext:

?1,org.springframework.web.context.ContextLoaderListener

?2,org.springframework.web.context.ContextLoaderServlet

只要在web.xml启动时,所有的应用实例都会被初始化。

XmlWebApplicationContext供ContextLoaderListener,ContextLoaderServlet内部装载spring配置文件使用。

--------------------------------------

现在我们将详细讨论这些步骤:

  1. 当初始化 Acegi 应用程序时,servlet 容器(本例中为 Apache Tomcat)创建了一个?servlet 上下文,其中保存了有关应用程序资源的信息,例如 JSP 页面和类。

  2. servlet 容器通知?ContextLoaderListener?类应用程序正在启动。

  3. ContextLoaderListener?类创建一个 Web 应用程序上下文以保存应用程序中特定于 Spring 的资源信息。借助 Spring 的 IOC 框架,您可以装载自己的自定义应用程序上下文。要创建应用程序上下文,将使用名为?ContextLoader?的上下文装载器类装载应用程序上下文。

  4. 如果应用程序不需要定义自己的应用程序上下文,则可以使用名为?XMLWebApplicationContext?的类,它是 Spring 框架的一部分并提供可处理 Spring XML 配置文件的功能。Acegi 应用程序使用的是 Spring 的 XML 配置文件,因此本文仅讨论由?XMLWebApplicationContext?类表示的应用程序上下文。在本例中,上下文装载器对?XMLWebApplicationContext?类进行实例化,后者表示您的 Acegi 应用程序的应用程序上下文。上下文装载器还在 Web 应用程序上下文中设置 servlet 上下文(于步骤 1 中创建)的引用。

  5. XMLWebApplicationContext?类对 XML 配置文件进行解析,获得关于 Java 类的信息并将信息装载到其他内部对象中。

  6. XMLWebApplicationContext?类对 XML 配置文件中指定的所有 Java 类进行实例化。XMLWebApplicationContext?类检查 XML 配置文件中经过配置的 Java bean 是否依赖其他的 Java 对象。如果是的话,XMLWebApplicationContext?类将首先对其他 bean 所依赖的 bean 进行实例化。通过这种方式,XMLWebApplicationContext?类创建了 XML 配置文件中定义的所有 bean 的实例。(注意,步骤 6 假定 XML 配置文件中所有 bean 都不要进行保护,稍后一节将介绍步骤 5 和步骤 6 之间执行的额外步骤,从而保护对此处创建的 Java bean 的访问)。

  7. XMLWebApplicationContext?类将所有 bean 保存在一个数组中。

--------------------------------------

?

?

读书人网 >软件架构设计

热点推荐