📅  最后修改于: 2023-12-03 15:20:13.236000             🧑  作者: Mango
在 Spring MVC 中,WebApplicationContext
是一个用于 Web 应用程序的特殊应用程序上下文。它与普通的应用程序上下文不同之处在于,它包含了针对 Web 应用程序的特殊 Bean。
WebApplicationContext 可以通过 XmlWebApplicationContext
或 AnnotationConfigWebApplicationContext
类来创建。XmlWebApplicationContext
可以用来加载 XML 格式的配置文件,而 AnnotationConfigWebApplicationContext
可以用来加载基于 Java 类的配置。
以下是使用 XmlWebApplicationContext
创建 WebApplicationContext 的示例代码:
/* web.xml */
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- other configuration -->
</web-app>
// Java config
XmlWebApplicationContext context = new XmlWebApplicationContext();
context.setConfigLocation("/WEB-INF/applicationContext.xml");
context.refresh();
但通常情况下,我们使用 ContextLoaderListener
监听器来加载 WebApplicationContext。这个监听器会在 Web 应用程序启动时自动创建 WebApplicationContext,并将其作为 ServletContext 的属性存储起来。我们可以通过 ServletContext
来获得这个 WebApplicationContext。
以下是使用 ContextLoaderListener
创建 WebApplicationContext 的示例代码:
/* web.xml */
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- other configuration -->
</web-app>
// Java code
WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
使用 WebApplicationContext 最常见的方式就是通过 @Autowired
或 @Inject
注解注入需要的 Bean。默认情况下,WebApplicationContext 中的 Bean 都是单例的。如果需要使用 Request 或 Session 范围的 Bean,则需要在 Bean 上使用 @RequestScope
或 @SessionScope
注解。
以下是使用 @Autowired
注入 Bean 的示例代码:
@Controller
public class MyController {
@Autowired
private MyService myService;
// ...
}
WebApplicationContext 是 Spring MVC 中用于 Web 应用程序的特殊应用程序上下文,它包含了针对 Web 应用程序的特殊 Bean。我们可以使用 XmlWebApplicationContext
或 AnnotationConfigWebApplicationContext
来创建,也可以通过 ContextLoaderListener
监听器来创建。使用 WebApplicationContext 最常见的方式是通过 @Autowired
或 @Inject
注解注入需要的 Bean。