簡體   English   中英

Spring MVC 3.x 設置全局數據

[英]Spring MVC 3.x Setting Global Data

我有國際化模塊和應用程序以兩種不同的模式運行。 要改變模式,我們需要重啟tomcat服務器。 模式 1 支持兩種語言,模式 2 支持 5 種語言。 語言存儲在.json文件中。

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

這種方法的問題是 - 每次我點擊 index.html 文件時,應用程序都會從​​磁盤讀取文件。 這不僅是不必要的,而且是耗時的,它給我的開發者自尊敲響了煩人的鍾聲。

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

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

如果是,你能告訴我我需要研究 Spring MVC 的哪些部分嗎?

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

其中一種方法可能是擁有一個 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
   } 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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