在 Play!中,play.api.Cache
是一个单例对象,因此可以从所有其他对象全局访问。而且,就其本质而言,缓存是一个可变对象。像这样的全局可变状态通常是非常有问题的。
特别是存在密钥冲突的潜在问题。两个不同的类(否则它们彼此松散耦合)可能会意外地使用相同的键来存储一些值。然后,其中一个更新将被另一个覆盖。
这个问题的一种可能的解决方案是创建一个新类,它甚至可以委托给 global Cache
,但在键中添加某种“命名空间”。尽管这并不难实现,但如果已经有一些标准的解决方案来解决这个问题会更好(最好在 Play! 本身上实现)。有没有?