SpringIOC容器初始化:
1.将IOC容器中的所有bean实例化为对象 new对象
2.将各个bean依赖的属性值注入进去 属性赋值
IOC中bean实例化为对象:
a.Java程序中:
java程序中有统一的入口函数main,所以只使用一次即可;
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
b.Java Web程序中:
web程序中没有统一的入口函数,每次使用都要初始化,很麻烦。
则:
思路:当服务器(tomcat)启动时,通过监听器将SpringIOC容器初始化;
监听器:监听tomcat是否启动,一旦启动,立刻实例化一个IOC容器对象。
该过程可以使用 spring-web.jar 来实现该功能。
则:
用spring开发web项目时,至少需要7个jar:6(spring-java)+1(spring-web)。
注意:在web项目中导入jar包需要放在WEB-INF中的lib目录下,然后点击File>Project Structure,点击Libraries>绿色+>java,选择你lib文件夹的jar包,也可以选择本地jar包
web项目启动时,会自动加载web.xml,因此需要在web.xml中加载 监听器(来初始化IOC容器)
代码实现:
在web.xml中配置:
<!--指定IOC容器(applicationContext.xml) 的位置-->
<context-param>
<!--监听器的父类ContextLoader中有一个属性值contextConfigLocation,保存着容器配置文件applicationContext.xml的位置-->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<!--配置spring-web.jar 提供的监听器,此监听器可以在服务器启动时 初始化IOC容器
初始化IOC容器(applicationContext.xml) :
1.必须告诉监听器此容器的位置:context;
2.默认约定位置:
a.将applicationContext.xml放在WEB-INF中;
b.文件名必须是applicationContext,不能更改;
-->
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>