【问题标题】:Spring MVC 3.x Setting Global DataSpring MVC 3.x 设置全局数据
【发布时间】:2015-11-21 18:39:54
【问题描述】:

我有国际化模块,应用程序以两种不同的模式运行。要改变模式,我们需要重启tomcat服务器。模式 1 支持两种语言,模式 2 支持 5 种语言。语言存储在.json 文件中。

每次用户点击index.html,在这个页面的@RequestMapping,我检查应用模式。并基于此应用程序模式,我读取了正确的.json 文件。提取语言列表并将其设置在模型中,然后将页面返回给客户端。

这种方法的问题是 - 每次我点击 index.html 文件时,应用程序都会从​​磁盘读取文件。这不仅没有必要,而且很耗时,而且它给我的开发者自尊敲响了恼人的钟声。

我想要的是,当应用程序启动时,我知道应用程序模式。

如何让spring MVC在开始时读取文件并在服务器运行时存储这些数据?有没有可能?

如果是,您能告诉我我需要研究 Spring MVC 的哪些部分吗?

我读到了HandlerInterceptor@ModelAttribute,但它只是说明了如何在每个请求中插入数据。但是,我真正想知道的是如何持久化从文件中读取的数据一次。

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    其中一种方法可能是拥有一个 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
       } 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-03
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多