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