【发布时间】:2013-08-30 13:10:01
【问题描述】:
我无法使用存在于 unix 文件系统而非类路径上的 ResourceBundleViewResolver(例如:views.properties)读取属性文件。使用 spring-webmvc-3.2.4。我本可以将属性文件放在类路径中(即在 WEB-INF/classes/ 中),但不想在更改属性文件中的单个条目时重新部署战争。
不重新部署战争的原因: 1) 生产环境偶尔需要更改jsp名称。虽然这种情况很少见,但用于快速解决。
2) 我习惯于在属性文件中提及视图名称,重新启动会有所帮助。 [我在即将发布的版本中也有点雄心勃勃,但不太确定它可以实现多远。就像,还想实现 WatchService,这有助于避免在属性文件更改时重新启动服务器。不太确定,如何将这个 WatchService 链接到 ResourceBundleViewResolver,但是已经看到了关于使用它来阅读 dao.properties 的帖子 参考:Spring Bean running in its own thread,http://e-blog-java.blogspot.com/2011/03/how-to-watch-file-system-for-changes-in.html]
3) 我工作的公司没有管理员,我希望减少出错的可能性,并希望尽可能避免部署战争。
主要是在发布此问题时,我正在考虑读取 ResourceBundleViewResolver 的外部属性文件,但如果我还可以获得 stackoverflow 社区视图,以便能够在更改时动态读取来自views.properties 的值而无需重新启动服务器将很棒.
感谢您的宝贵时间。
【问题讨论】:
-
您能否更新您的问题以解释为什么在更改配置后不重新部署应用程序很重要?这将帮助我为您提供更好的答案。
-
Rob - 请找到我更新的问题。谢谢。
-
您是否尝试过不使用类路径加载器而是使用直接路径?或者在类路径中添加一个目录来保存配置项?或者,更好的是,如果你只是在谈论你的资源包,为什么不编写一个自定义的来从数据库而不是类路径中的文件读取消息。我的公司就是这样做的。
-
CodeChimp - 我尝试使用直接外部路径和一些前缀:文件路径和文件#,但没有奏效。不太确定这是否接近但无法找到任何帖子或使用外部文件系统来满足我的要求的弹簧参考。
也尝试使用 systemenvironmentfilepath:/home/user/dev/properties/views list>file:#{systemEnvironment['RESOURCE_PATH']}/views 。不想使用数据库。