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