繁体   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