【发布时间】:2020-02-27 21:10:03
【问题描述】:
我有两个共享数据库的应用程序。一个应用程序处理来自队列的消息,另一个应用程序具有 JSF 屏幕,这些屏幕支持队列使用的完全相同的功能(以及许多其他功能)。 JPA 代码中有相当多的重叠,因此我想为两个应用程序创建一个可重用的模块(因为当我对 JPA 查询进行更改时,我必须将它应用于两个应用程序)。
现在我们在数据库的每一行都附加了一个用户 ID。当为响应队列消息而创建行时,用户 ID 是静态的“SYSTEM_X_ID”(例如)。但是当用户通过 JSF 屏幕创建该行时,它将是会话中的用户 ID。
这就是我的问题所在 - 应用程序的队列版本没有会话。会话对象被注入。那么如何编写可重用的数据库代码来检查是否存在注入的会话对象,该对象将被注入 JSF 应用程序中,但不会注入到队列应用程序中?有没有可能?
到目前为止,我的一个想法是修改所有其他 Dao 类扩展的 BaseDao 类,以便在队列版本中静态分配它而不引用会话对象,而在 JSF 版本中注入会话对象并使用其中的用户ID。我宁愿不必这样做 - 因此我的问题。
提前致谢。
【问题讨论】:
标签: java dependency-injection software-design