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配置文件使用。
--------------------------------------
现在我们将详细讨论这些步骤:
ContextLoaderListener?类应用程序正在启动。ContextLoaderListener?类创建一个 Web 应用程序上下文以保存应用程序中特定于 Spring 的资源信息。借助 Spring 的 IOC 框架,您可以装载自己的自定义应用程序上下文。要创建应用程序上下文,将使用名为?ContextLoader?的上下文装载器类装载应用程序上下文。XMLWebApplicationContext?的类,它是 Spring 框架的一部分并提供可处理 Spring XML 配置文件的功能。Acegi 应用程序使用的是 Spring 的 XML 配置文件,因此本文仅讨论由?XMLWebApplicationContext?类表示的应用程序上下文。在本例中,上下文装载器对?XMLWebApplicationContext?类进行实例化,后者表示您的 Acegi 应用程序的应用程序上下文。上下文装载器还在 Web 应用程序上下文中设置 servlet 上下文(于步骤 1 中创建)的引用。XMLWebApplicationContext?类对 XML 配置文件进行解析,获得关于 Java 类的信息并将信息装载到其他内部对象中。XMLWebApplicationContext?类对 XML 配置文件中指定的所有 Java 类进行实例化。XMLWebApplicationContext?类检查 XML 配置文件中经过配置的 Java bean 是否依赖其他的 Java 对象。如果是的话,XMLWebApplicationContext?类将首先对其他 bean 所依赖的 bean 进行实例化。通过这种方式,XMLWebApplicationContext?类创建了 XML 配置文件中定义的所有 bean 的实例。(注意,步骤 6 假定 XML 配置文件中所有 bean 都不要进行保护,稍后一节将介绍步骤 5 和步骤 6 之间执行的额外步骤,从而保护对此处创建的 Java bean 的访问)。XMLWebApplicationContext?类将所有 bean 保存在一个数组中。--------------------------------------
?
?