实现思想
- 加载Spring 核心配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
- new 对象,功能可以实现,效率低
实现思想:把加载配置文件和创建对象过程,在服务器启动时候完成。
-
实现原理:
- ServletContext 对象
- 监听器
-
具体使用
- 在服务器启动时候,为每个项目创建一个ServletContext对象
- 在ServletContext 对象创建时候,使用监听器可以具体到ServletContext 对象在什么时候创建。
3.使用监听器监听到ServletContext 对象创建时候。 - 加载Spring配置文件,把配置文件配置对象创建。
- 把创建出来的对象放到ServletContext域对象里面(setAttribute方法)
- 获得对象时候,到ServletContext 域得到(getAttribute方法)
实现步骤
通过配置web.xml 文件,设置在启动时加载spring的配置文件。
下面是web.xml 文件配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
从上面配置文件中可以看出,只要两步:
- 配置参数
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</context-param>
key | value | 说明 |
---|---|---|
param-name |
contextConfigLocation |
contextConfigLocation 是固定的,在ContextLoader 类中可以找到 |
param-value |
classpath:spring.xml |
classpath: + spring 的配置文件位置 |
这里需要对参数进行说明:
key | value | 说明 |
---|---|---|
param-name |
contextConfigLocation |
contextConfigLocation 是固定的,在ContextLoader 类中可以找到 |
param-value |
classpath:spring.xml |
classpath: + spring 的配置文件位置 |
注意: 如果没有如上配置,在启动时,将会抛出java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml]
- 添加监听
固定学法:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>