[英]Lazy Instantiation of the Spring MVC DispatcherServlet?
我有沒有辦法在代碼中實例化Spring MVC DispatcherServlet而不是將其放入web.xml並由Web服務器實例化?
這樣做的原因是,我想檢查一個memCache來查看我是否最近已經渲染了所請求的頁面,如果是,則僅從memCache返回,而不是通過Spring MVC和控制器。
DispatcherServlet的〜2秒實例化非常重要,因為我使用的是Google App Engine,最終可能需要用戶再等待2秒鍾才能等待其頁面。
我努力了
dispatcherServlet = new DispatcherServlet();
dispatcherServlet.init();
dispatcherServlet.service(request, response);
但是我在初始化調用時遇到了這個異常:
[java] java.lang.NullPointerException
[java] at org.springframework.web.servlet.HttpServletBean$ServletConfigPropertyValues.<init>(HttpServletBean.java:196)
[java] at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:114)
基本上,我要尋找的是一種在代碼中實例化servlet的方法,而不必在web.xml中指定它並且不必調用
getServletConfig().getServletContext().getServlet("dispatcherServlet");
DispatcherServlet
是一個Servlet,因此您應該調用init(ServletConfig)
而不是init()
進行初始化。
除非Google App Engine做的事情確實很奇怪,否則DispatcherServlet在應用程序啟動時只會實例化一次。
如果您要緩存所提到的頁面響應,我建議將其實現為HandlerInterceptor (可以將其應用於您喜歡的任何URL模式),這使您可以在調用之前或之后插入邏輯控制器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.