spring IoC設計的核心是Bean容器,BeanFactory采用了java的工廠模式,通過從XML配置文件中讀取JavaBean的定義,來實現JavaBean的創建、配置和管理。所以BeanFactory可以成為IoC容器。而ApplicationContext擴展了BeanFactory容器並添加了對國際化、資源訪問、事件傳播等方面有良好的支持可以應用在java App和java Web中。在java項目中通過ClassPathXMLApplicationContext類手工實例化ApplicationContext容器十分合適。但是對於web項目就不行了,web項目的啟動是由相應的web服務器負責的。因此,在web項目中ApplicationContext容器的實例化工作最好由web服務器來完成。
spring提供兩種方式
(1)基於ContextLoaderListener實現。
web.xml中添加:
<!--指定spring配置文件的位置,多個配置文件以逗號分隔-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!--指定以listener方式啟動spring容器-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
(2)基於ContextLoaderServlet實現。
web.xml中添加:
<!--指定spring配置文件的位置,多個配置文件以逗號分隔-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!--指定以Servlet方式啟動spring容器-->
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<!--load-on-startup的含義就是其中的參數大於等於零的時候表示容器在啟動的時候就加載這個servlet-->
<load-on-startup>1</load-on-startup>
</servlet>