组织 Spring 个 Web 项目

Organizing Spring Web Project

我需要创建一个 Spring Maven Rest 项目。我尝试使用谷歌搜索,发现 Spring MVC 项目可以按以下方式组织 -

我的疑问是我不需要从数据库中获取任何东西,而是我会调用第三方休息服务来根据用户的请求获取数据。我只需要接受用户的请求并调用第三方服务来获取用户请求的数据并将其保存在动态确定的数据库中 table.

那么我是否需要 DAO 或存储库包?如果不是,那么我应该在哪个包中保留从休息服务中获取数据的逻辑。另外,我应该在哪个包中保留我的 rabbit mq 侦听器和发件人?我对我的应用程序没有任何看法,我是否仍需要遵循 MVC 模式。我可以在这里遵循什么项目结构/模式。我很困扰。有没有什么好书可以解释所有这些问题?

什么是 DAO?它们是您的数据访问对象。 它们是 services,抽象了你的持久性策略。 这可以通过数据库查询来完成,但同样可以通过 webservices.
来处理 因此,就我个人而言,我认为 DAO 可以与您的持久层保持通信......恰好是网络服务。

很可能您没有任何意见。听起来您正在自己创建网络服务。在这种情况下,最好不要有任何视图(尽管您可以 使用 视图,例如,如果您要返回 xml 并决定使用视图模板来渲染输出。不是我推荐的东西,但是...)

在我看来: 您的 DAO 确保模型对象的持久性和获取。 你的服务在你的模型对象上工作,并且可能做其他事情不由你的 DAO 处理。就像 aggregateAndColorAllBananas(Set<Banana> bananas) 是您的服务会做的事情。或者 countAllBananasInAllSources()(使用 ChiquitaDAO 获取所有 chiquitabananas,使用 MuditaDAO 获取所有 Mudita 香蕉)

在这种情况下我会跳过 dao 包。与第三方网络服务通信时,我通常使用 "consumer" 包。所以在你的情况下,我想我会有包:控制器、服务、消费者、模型、异常。 如果您有任何 Spring java 配置文件,也许还有一个 "config" 包。