Java单例类与JSF应用程序范围内的托管bean - 差异?

djm*_*jmj 8 jsf singleton managed-bean

使用单例类和应用程序范围的托管bean来保存应用程序数据有区别吗?

我需要查找某些JNDI资源,例如远程bean接口,因此我自己写了一个单例来缓存我的引用,只允许单引用.(服务定位)

我在两个不同的浏览器中打开了我的网站,而且这个单例只被初始化了一次.所以我假设它的应用范围?

应用程序范围托管bean的任何其他好处,然后能够访问其在jsf中的属性?

Bal*_*usC 5

单例不可单元测试,不可抽象或不可扩展。如果您的唯一目的是拥有应用程序范围的数据(至少,如果出于某种原因您真的想要一个完全有价值的单例),那么单例的可靠创建和维护也将不必要地复杂(多数情况下,初学者甚至无法完全理解单例的含义)成为)。

像应用程序范围的受管bean一样,“仅创建一个”就更易于开发,测试和维护。作为框架的JSF将保证在Web应用程序的生存期内仅创建和重用一个实例。

也可以看看:

  • Singleton和ApplicationScope单例注释之间有什么区别?(不是受保护的单例模式,而是注释)?@BalusC (2认同)