在使用Spring框架的Web應用程序中解決UI消息並提供內化支持的方式有哪些?Spring國際化支持
我們使用屬性文件和ResourceBundleMessageSource來解析Spring中的消息。 Spring的實現會在我們的應用程序中導致高CPU使用率。 ResourceBundleMessageSource實現有兩個問題。
- 鎖定爭用 - getResourceBundle()和getMessageFormat()都是同步的。
- MissingResourceException - 解析消息涉及遍歷應用程序中定義的所有資源包並調用bundle.getString(key)。如果未找到密鑰,bundle.getString(key)方法調用將引發MissingResourceException。搜索密鑰,直到找到給定密鑰的消息。由於異常構建是一個緩慢的過程,可能會吃掉CPU(這是我在負載測試中觀察到的),這看起來像是一個瓶頸。
儘管上述兩個問題(通過擴展類和重寫行爲)都有解決方法,但我想知道Spring框架中是否還有其他方法爲Web應用程序提供國際化支持。
在此先感謝
你說得對。實現一個自定義的MessageSource就是解決這個問題的方法。自定義實現可以在啓動時解析預先配置的區域設置的消息。 ReloadableResourceBundleMessageSource不會幫助,因爲它不會解決我上面提到的兩個問題。 –
我實現了兩個MessageSource實現。通過解決方法解決上述兩個問題的解決方案,以及解析消息並將其緩存以供將來參考(資源包和消息格式實例未緩存)的另一個實現。以下是第一個實現的外觀 - http://amitstechblog.wordpress.com/2012/09/17/issues-with-springs-resourcebundlemessagesource/ –