我的应用程序具有所有表的国际化。所以所有的表都有另一个表用于不同的languange支持,其中key作为语言代码,如'en-us'。每次如果它命中数据库并在页面中显示,则应用程序变慢。所以我们通过扩展AbstractMessageSource类来实现。我引用了链接http://forum.springsource.org/showthread.php?t=15223但是基于这个存储的所有消息都存储在内存中。如果表的大小/表的数量增长,则这个消息散列也会增长。然后记忆问题来了。因此我们计划使用ehcache技术将其保存在磁盘中。请提供样品。让我知道这是存储对象的有效选项吗?
答案 0 :(得分:0)
将DataSourceMessageSource中的Map条目更改为:
/ **缓存保持已生成的每个消息代码和区域设置的MessageFormats
*地图
/ **每个语言环境的所有消息(所有基本名称)
*地图
那会让你前进。您还需要一个带有以上每个缓存条目的ehcache.xml。你应该speefy overflowToDisk = true。
请注意,您将产生反序列化费用。如果你看到cpu的成本很高,那么重组代码可能值得返回你想要的而不是地图。
Greg Luck