簡體   English   中英

Spring MVC DispatcherServlet的延遲實例化?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM