2014-04-12 43 views
0

我們使用Spring MVC註釋。 我也有一個StartUpServlet。我的要求是在FilterDispatcher servlet初始化後加載這個servlet。在彈簧上下文初始化後加載webservlet

基本上,我們想要初始化Google Guava緩存並使用表中的數據加載緩存。

我可以有一個靜態塊並加載數據。但問題是我們做緩存初始化的類和緩存加載可能是垃圾收集,如果我們從來沒有長時間訪問它。 所以,儘管在servlet中引用了緩存加載類實例,所以它永遠不會被垃圾收集。但是Servlet在FrameworkServlet分派器初始化並且依賴注入正在工作之前就被加載了。

尋找在此幫助......

由於事先 Baskar.S

回答

0

緩存實際上並不需要在一個servlet,最簡單的是把它在服務器啓動時填充緩存的單身bean內部。這個bean應該是這樣的:

@Component("cacheBean") 
public class MyCachedDataService implements InitializingBean { 

    private MyCache cache; 

    public void afterPropertiesSet() { 
     ... populate the cache ... 
    } 

    public void cacheLookup(String key) { 
     ... lookup the cache ... 
    } 
} 

最重要的這裏將避免對服務器啓動後,緩存進一步改變,以避免競爭條件。然後像往常一樣使用@Autowired將豆類注入其他豆類。