Spring-IOC的懂得一

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 保存在一个数组中。

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