0

我正在使用 cxf 和 spring 开发一些 Web 服务。服务必须是区域设置感知的,因为一些消息是在 DB 中定义的。

实施它的正确方法是什么?

应该如何将语言环境传递给服务?可能在 HTTP 标头或 SOAP 标头中。我不希望使用除 HTTP 之外的其他传输方式,因此 HTTP 标头可能是一个不错的选择。

如何从 Web 服务代码中检索语言环境?也许我可以使用一些 Spring 线程本地功能。顺便说一句,我使用 Spring 安全性进行身份验证和授权,所以我可以以某种方式将语言环境放在安全上下文中。

任何评论或示例都会有很大帮助。

提前谢谢了!

4

1 回答 1

1

一般来说,您会询问隐式参数与显式参数的优缺点。

隐式参数通常用于传递数据库连接、多租户 ID、用户的语言等 - 这些东西并不是真正的直接函数/服务参数,但它们会对生成的结果产生影响。

在封闭系统中,您可以考虑隐式传递这些。所以没有必要明确地传递这些(这往往会使你的代码混乱)。

另一方面,它使您的代码“不那么明确”:如果您(或其他人)稍后查看代码,可能不清楚是否有其他东西在引擎盖下传递:声明了隐式参数,并且隐式使用它的函数可能会令人困惑。

因此,即使在封闭系统中,也应谨慎使用此功能:应将“少打字”的优势与“不可见的隐含参数”的成本进行比较。

另一方面,在公共 API 的上下文中,我不会使用隐式:没有什么比一个函数调用的简单性更好,它显式传输所有参数:我不会添加任何其他人为的技术复杂性。如果您保持您的技术界面简单,它可能会防止调用方的挫败感。

于 2013-06-24T13:57:26.467 回答