Java EE 应用程序中的用户偏好设置

8

我有一个不断增长的Web应用程序,现在需要能够存储用户和系统首选项/设置。过去,我总是为Web应用程序编写自己的首选项系统,但我想知道其他人是如何解决这个问题的?是否有任何适用于Web应用程序的首选项库可以推荐?

理想情况下,用户首选项应该有默认值,用户可以覆盖该值。但并非所有首选项都应向用户公开,因为有些首选项将用于诸如对话框的最后位置之类的事情。

如果我选择自己编写,则认为它将是一个单独的首选项表,其中所有首选项都存储为字符串,并根据需要转换为其真实的基本数据类型。例如,一个表格可能包括键、用户键、设置名称和设置值。相比每个数据类型一列的方法,我更喜欢这种方法,因为它可以防止设置意外地结束时出现两个值,并且设置的使用者应该知道他们想要什么数据类型。


你需要动态更改偏好设置吗?否则,JEE标准是使用<env-entry>进行查找或注入。 - ewernli
是的,首选项需要是动态的。有些将由用户设置,例如他们喜欢的主题,而其他一些将由系统为用户设置,例如对话框的最后位置。 - wobblycogs
2个回答

3
我们使用的一种方法是:
  • 所有非强制属性都在代码中有默认值
  • 提供一个属性文件,在其中定义面向技术的属性,并随 Web 应用程序一起交付
  • 在应用程序启动时查询 SQL 表,以加载主要面向功能的属性

来自数据库的属性优先级高于包含的属性文件中的属性。如果您的要求是防止功能经理更改技术属性,则可以在属性表中添加一个上下文列,在管理 UI 中进行检查。

应用程序代码只能看到一个全局使用的属性集合。


-3

2
谢谢,我知道偏好设置系统,并在一些桌面应用程序中使用过它。它可能可以做到我想要的,但我认为它对于 Web 应用程序来说是一个相当糟糕的选择。我认为它最大的缺点是没有开箱即用的数据库存储设置和没有用户会话的概念(它支持每个用户的设置,但不是 Web 应用程序所需的方式)。 - wobblycogs
此外,在UNIX上的标准首选项实现使用后台线程将更改刷新到后备存储器,而在重新加载Web应用程序时无法停止此线程,这会导致内存泄漏。 - Matthew Buckett

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