发布
社区首页 >问答首页 >弹簧国际化支撑

弹簧国际化支撑
EN

Stack Overflow用户
提问于 2012-08-28 06:47:45
回答 1查看 907关注 0票数 1

在使用spring框架的web应用程序中,解析UI消息和提供内部化支持的不同方法是什么?

我们使用属性文件和ResourceBundleMessageSource来解析Spring中的消息。Spring的实现在我们的应用程序中导致了较高的cpu使用率。ResourceBundleMessageSource实现有两个问题。

  1. 锁定争用- getResourceBundle()和getMessageFormat()都是同步的。
  2. MissingResourceException -解析消息需要遍历应用程序中定义的所有资源包并调用bundle.getString(key)。如果找不到键,则bundle.getString( key )方法调用将抛出一个MissingResourceException。搜索密钥,直到找到给定密钥的消息为止。由于异常构造是一个缓慢的过程,可能占用CPU (这是我在负载测试中观察到的),这看起来像是一个瓶颈。

尽管上述两个问题都有解决办法(通过扩展类和覆盖行为),但我想知道spring框架中是否有其他方法为web应用程序提供国际化支持。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-17 14:11:39

您可以使用ReloadableResourceBundleMessageSource代替。它提供了一些内部缓存。

如果这不起作用,我建议您实现自己的MessageSource (这是相当直接的)。Spring提供了AbstractMessageSource,这可能会对开始提供帮助。

在那里,您可以实现一些缓存。更有可能的是,您的本地化不经常被更新。

您可以在这里阅读使用Spring3.1中新的可缓存注释

spring 3.1 @Cacheable示例

在允许管理员覆盖数据库中的区域设置的应用程序中,我已经成功地做到了这一点。但是,您的特定实现显然会有很大的不同。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12154086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档