如何在 jax-rs 中循环管理 @Inject?

问题描述

我正在用纯 jax-rs 编写应用程序(没有任何像 Spring 或类似的框架)。 我的应用程序是在域中构建的。因此,假设要构建一个带登录名的 TODO 列表应用程序,有 2 个域:

  • 一个用于管理 TODO 列表(数据库上的 CRUD)
  • 一个用于管理用户(注册和登录)。 每个域都有自己的控制器和服务以及一个或多个存储库。

因为以后应用会拆分成不同的应用,所以我想在逻辑上将数据库分开:用户域不包括其他域的任何实体/存储库类。

为此,我认为最好的方法是通过 @Inject 仅共享服务接口。实际上,该服务是在不暴露数据库实体的情况下实现业务逻辑和安全检查的。因此,为了检索其他域的所有信息,一个服务需要向另一个服务请求。

表面上:

user
 |- UserController (@Inject UserService)
 |- UserService (@Inject UserRepository,@Inject TodoService)
 `- UserRepository
todo
 |- TodoController (@Inject TodoService)
 |- TodoService (@Inject TodoRepository,@Inject UserService)
 `- TodoRepository

如您所见,每个服务都注入了其他服务。 无论如何,在启动时,JBoss 服务器失败,因为依赖项是循环的。

UserService <-> TodoService 

例如,在此用例中,UserService 在登录时检查凭据后调用 TodoService.countList(user.id) 以获取列表计数。相反,TodoService 需要获取用户信息(如用户名等),以便用用户信息填充响应。这只是一个例子。

所以,我想保持存储库隔离并使用服务接口以分离业务登录。 我还希望在不包括其他域的服务的情况下尽可能简单地控制控制器。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)