SpringMvc有几个上下文
Spring MVC中通常有两种上下文:
- 应用上下文(ApplicationContext):这是Spring容器的核心,它负责管理Spring容器中的所有beans。在Spring MVC应用中,应用上下文通常是
WebApplicationContext
的实例,它继承了标准的ApplicationContext
,添加了一些特定于web的功能,例如ThemeSource
和Theme
相关的接口。 - Web上下文:这是与一个特定web请求相关联的上下文,它是
RequestMappingHandlerMapping
、RequestMappingHandlerAdapter
和ExceptionHandlerExceptionResolver
等一系列MVC相关组件的容器。
在Spring MVC中,每个DispatcherServlet都有其自己的WebApplicationContext,它是应用上下文的子上下文。这个Web上下文持有MVC相关的bean,如控制器、视图解析器等,并且是请求作用域的,意味着每个请求都有其自己的Web上下文。
以下是一个简单的示例,展示如何在Spring MVC应用中获取这两种上下文:
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
// 在Servlet中获取应用上下文
public class MyServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
// 使用应用上下文...
}
}
// 在控制器中获取Web上下文
@Controller
public class MyController {
@Autowired
private WebApplicationContext webApplicationContext;
@RequestMapping("/somepath")
public String handleRequest(HttpServletRequest request, HttpServletResponse response) {
// 使用Web上下文...
return "viewName";
}
}
在实际的Spring MVC项目中,你可以通过这些方法访问到Spring MVC的两种上下文。
评论已关闭