Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc ResourceBundleViewResolver-读取类路径上不存在的属性文件_Spring Mvc_Resourcebundle - Fatal编程技术网

Spring mvc ResourceBundleViewResolver-读取类路径上不存在的属性文件

Spring mvc ResourceBundleViewResolver-读取类路径上不存在的属性文件,spring-mvc,resourcebundle,Spring Mvc,Resourcebundle,我无法使用ResourceBundleViewResolver(例如:views.properties)读取unix文件系统上而不是类路径上的属性文件。使用spring-webmvc-3.2.4。我本可以将属性文件放在类路径上(即,在WEB-INF/classes/中),但不想在更改属性文件中的单个条目时重新部署war 不重新部署战争的原因: 1) 有时,需要在生产环境中更改jsp名称。虽然这很少见,但用于快速解决 2) 我习惯于在属性文件中提到视图名称,重启会有所帮助。[我认为在即将发布的版本

我无法使用ResourceBundleViewResolver(例如:views.properties)读取unix文件系统上而不是类路径上的属性文件。使用spring-webmvc-3.2.4。我本可以将属性文件放在类路径上(即,在WEB-INF/classes/中),但不想在更改属性文件中的单个条目时重新部署war

不重新部署战争的原因: 1) 有时,需要在生产环境中更改jsp名称。虽然这很少见,但用于快速解决

2) 我习惯于在属性文件中提到视图名称,重启会有所帮助。[我认为在即将发布的版本中也有点雄心勃勃,但不太确定它能达到什么程度。比如,我也想实现WatchService,以帮助避免在属性文件更改时重新启动服务器。我不太确定这个WatchService如何链接到ResourceBundleViewResolver上,但看到过关于使用它读取dao.propert的帖子ies 参考文献:,]

3) 我工作的公司没有管理员,我希望不那么容易出错,并希望尽可能避免部署战争

主要是在发布这个问题时,我正在研究如何读取ResourceBundleViewResolver的外部属性文件,但是如果我也能在上获得stackoverflow社区视图,那么就能够从视图中读取值。在更改属性时,无需重新启动服务器,这将非常棒


谢谢你的时间。

我的答案有两部分

首先,您将无法使用ResourceBundleViewSolver实现您想要的。这适用于ResourceBundle,根据定义,ResourceBundle必须在类路径上可用。因此,您必须将views.properties放在类路径上,它才能工作

其次是关于动态重新加载视图分辨率

使用
org.springframework.web.servlet.view.xmlviewsolver
并确保关闭视图缓存,您可能可以实现所需的功能。因此,将views.properties移动到XML配置中,并将其放在文件系统中。然而,就处理每个请求的XML配置而言,这可能是相当昂贵的。你得试试看,但听起来并不理想

或者,正如前面所建议的,您可以滚动自己的ViewResolver实现来实现您想要的

不过,我想请你停下来,想想你想做什么。我建议您的生产环境应该是经过良好测试的已知工作状态的快照。您正在谈论的更改类型应该在被推入生产环境之前进行测试。如果出现问题,则可以立即回滚到上一个已知的工作快照


重新启动服务器是一个小麻烦,但实际上,您需要多久做一次?我还建议,让一个非技术团队简单地将一个已知的工作WAR文件复制到一个特定位置比编辑属性文件更不容易出错?

请更新您的问题,解释为什么在更改应用程序的配置后不重新部署应用程序很重要?这将帮助我为你提供一个更好的答案。罗伯-请找到我的最新问题。谢谢。您是否尝试过不使用类路径加载器,而是使用直接路径?或者将目录添加到类路径以保存配置项?或者,更好的是,如果您只讨论您的资源包,为什么不编写一个自定义包来从DB而不是类路径中的文件读取消息呢。这就是我的公司所做的。CodeChimp-我尝试使用直接外部路径&一些带有前缀:filepath和file,但没有成功。不太确定这是否很接近,但无法找到关于使用外部文件系统以满足我的需求的任何帖子或spring参考。filepath:/home/user/dev/properties/views还尝试了systemenvironment文件:#{systemenvironment['RESOURCE\u PATH']}/views。不想使用DB。