当您将特定的springbean返回给rest端点的任何使用者时会发生什么

4dc9hkyq  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(269)

我有一个项目与几个 Spring 启动模块。我们的数据层并不是模型对象的crud和finder的更简单、更典型的情况,与我们的数据交互的服务需要更多的元数据配置和知识。如果我有一个模块来整合对其他几个模块很重要的配置,并且如果我将这些示例注册为springbean,那么如果我将它们从rest端点返回给使用者会发生什么呢?例如,让我们假设其中一个对象是自定义对象 MongoRepository 实施。返回的示例是否正常?如果两个模块调用端点来请求示例,那么当示例在使用者模块反序列化时,它们是否可以正常工作?如果使用者与承载rest端点的服务在不同的jvm上,是否存在差异?
我不确定当我们考虑一个模型对象由rest控制器发送并由使用者接收时会发生什么情况时,答案是否像看上去那样简单。存储库包括到数据库的已建立连接,该连接可能是ssl,也可能不是ssl。对于身份验证和授权之类的东西,这种方法似乎不可行,但我想我会问这个问题,以确保我真正理解这一点。我正在权衡这种方法和将这个模块创建为一个库(jar),我可以将它包含在需要这种配置的模块中。不过,我怀疑我只能用jar/library方法来实现这一点。

dvtswwa3

dvtswwa31#

您不应该通过(rest)端点将存储库、服务、数据源等基础结构bean公开为资源。那只会导致(奇怪的)问题。
例如,如果你想暴露你的 MongoRepository 它将被序列化(通过java) Serialization )为什么要在我的电脑上工作?我没有与mongodb的连接,我甚至可能没有它,我甚至可能不关心它。想象一下同样的情况 JpaRepository 连接到企业级数据库服务器,如oracle或db2。我肯定不会有那个,也不会有所有的模式和数据。
因此,根据经验,不要通过(rest)端点公开这些服务。
您的(rest)端点应该只公开模型,而不公开与基础结构(或应用程序)相关的bean。

相关问题