Spring MessageSource实现是否线程安全?

5
可以假设在初始化后,org.springframework.context.MessageSource接口的所有实现都是线程安全的吗?
我希望它是安全的,但现在我正在查看Spring源代码,发现有org.springframework.context.support.ReloadableResourceBundleMessageSource,它会不时地重新加载属性,并且文档没有说明它是否线程安全...
编辑:看起来ReloadableResourceBundleMessageSource确实在需要同步的地方进行了同步... 但是我的原始问题仍然存在。
1个回答

3

我刚查看了源代码 - 没有任何同步关键字和可写状态。不,它不是线程安全的。

话虽如此,从您的应用程序角度来看,脏读取有什么危害呢?错误的标签或消息值?您可能不必担心缺少的值,因为如果JSP或类被修改以使用新消息,则需要重新部署整个应用程序。在这里,我认为您非常安全。


请查看http://www.javaresearch.org/source/spring1.0.2/org/springframework/context/support/ReloadableResourceBundleMessageSource.java.html,它确实在cachedProperties上进行同步。脏读取是可以的,但异常是我担心的。虽然你说得对,不应该发生这种情况。 - Domchi
谢谢,我忘记了那个。他们很聪明,尽可能地保持了同步块的小。 - duffymo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接