Java Spring MVC 3.x设置全局数据
我有两种不同的模式运行国际化模块和应用程序。要更改模式,我们需要重新启动tomcat服务器。模式1支持两种语言,模式2支持5种语言。这些语言存储在Java Spring MVC 3.x设置全局数据,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有两种不同的模式运行国际化模块和应用程序。要更改模式,我们需要重新启动tomcat服务器。模式1支持两种语言,模式2支持5种语言。这些语言存储在.json文件中 每次用户点击index.html,我都会在该页面的@RequestMapping中检查应用程序模式。基于这种应用模式,我读取了正确的.json文件。提取语言列表并在模型中进行设置,然后将页面返回给客户机 这种方法的问题是——每次我点击index.html文件时,应用程序都会从磁盘读取该文件。这不仅是不必要的,而且很费时,它给我的开发者
.json
文件中
每次用户点击index.html
,我都会在该页面的@RequestMapping
中检查应用程序模式。基于这种应用模式,我读取了正确的.json
文件。提取语言列表并在模型中进行设置,然后将页面返回给客户机
这种方法的问题是——每次我点击index.html文件时,应用程序都会从磁盘读取该文件。这不仅是不必要的,而且很费时,它给我的开发者自我敲响了恼人的警钟
我想要的是,当应用程序启动时,我知道应用程序模式
如何让SpringMVC在开始时读取文件并在服务器运行时存储这些数据?有可能吗
如果是的话,你能让我知道我需要研究SpringMVC的哪些部分吗
我读过关于
HandlerInterceptor
和@modeldattribute
的文章,但它只说明了如何在每个请求中插入数据。然而,我真正想知道的是如何将从文件中读取的数据持久化一次。其中一种方法可能是使用bean,它执行初始化bean
并在'afterPropertiesSet'方法中加载文件。它还有一个返回语言列表的方法,可以连接到所有其他需要它的bean中。
您也可以在“HandlerInterceptor”中执行,只需让它实现InitializingBean
,并将列表存储在类变量中
e、 g
public MyInterceptor扩展HandlerInterceptorAdaptor实现初始化bean{
私有列表语言列表;
@凌驾
void postHandle(HttpServletRequest请求,
HttpServletResponse,
对象处理程序,
模型和视图(模型和视图)
抛出异常{
//在模型中设置列表
}
@凌驾
公共无效AfterPropertiesSet(){
languageList=…;//读取文件
}
}
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
}
}