2015-11-21 48 views
-2

我有兩種不同模式的國際化模塊和應用程序。要改變模式,我們需要重新啓動tomcat服務器。模式1支持兩種語言,模式2支持5種語言。這些語言存儲在.json文件中。Spring MVC 3.x設置全局數據

每當用戶點擊index.html,在本頁的@RequestMapping中,我檢查應用程序模式。並且基於這種應用模式,我讀取了正確的.json文件。提取語言列表並在模型中設置,然後將頁面返回給客戶端。

這種方法的問題是 - 每當我點擊index.html文件時,應用程序都會從​​磁盤讀取文件。這不僅是不必要的,而且也是耗時的,並且它對我的開發者自我而言令人煩惱。

我想要的是,當應用程序啓動時,我知道應用程序模式。

只要服務器運行,如何讓Spring MVC在開始時讀取文件並存儲這些數據?它甚至有可能嗎?

如果是的話,你能讓我知道我需要看看Spring MVC的哪些部分?

我讀了關於HandlerInterceptor@ModelAttribute,但它只是說明如何在每個請求中插入數據。但是,我真正想知道的是如何從文件中讀取一次數據。

回答

0

其中一種方法可能是創建一個bean,這會阻止InitializingBean並在'afterPropertiesSet'方法中加載該文件。它也會有一個方法來返回語言列表,並且可以連接到所有需要它的bean。 你也可以在'HandlerInterceptor'中做到這一點,只要它實現InitializingBean並將列表存儲在類變量中。

例如

public MyInterceptor extends HandlerInterceptorAdaptor implements InitializingBean { 
    private List<String> languageList; 

    @Override 
    void postHandle(HttpServletRequest request, 
       HttpServletResponse response, 
       Object handler, 
       ModelAndView modelAndView) 
     throws Exception { 

     //set list in the model 
    } 

    @Override 
    public void afterPropetiesSet() { 
     languageList=...; //read file 
    } 
}