【发布时间】:2020-05-25 19:11:41
【问题描述】:
背景:
我正在开发一个 java Spring REST 微服务,它需要根据请求参数处理多个相同的后端系统和多个相同的数据库。
基本上我有 3 个“品牌”。每个品牌都有一套下游服务和一个数据库。我无法控制这些。
我的 spring 服务将接收品牌作为请求的一部分,并且需要调用正确的下游服务并使用正确的数据库。
以前,我会通过为每个品牌提供一个单独的 spring 服务实例来处理这个问题。每个品牌都有一个属性文件,spring 将使用它来连接 bean。我会为每个品牌设置单独的 URL,这没有问题。
我的一些 bean 在创建过程中需要了解“品牌”,因为它们是连接下游服务的包装器。 IE。一旦创建了 bean,就无法将其切换为“不同的品牌”。
问题:
我想更改此设置,以便我的服务的单个实例可以处理任何品牌的请求。
要求: 我正在考虑以下解决方案:
有一个非品牌产品的通用属性文件。 Spring 将连接任何非品牌 bean 并将它们保留为单例 bean。
每个品牌都有一个包含品牌特定网址等的属性文件 Spring 将使用适当的属性文件为每个品牌创建一组单例 bean。
接下来,当请求在 spring 中出现时,将读取请求参数并使用特定于该品牌的 bean。
性能对我来说很重要,所以我想尽可能地重复使用这些 bean。
我想让这件事尽可能透明,这样创建新 bean 的人就不必担心在标准配置/上下文类之外做任何事情。
有谁知道实现这一目标的最佳解决方案是什么?
【问题讨论】:
标签: java spring properties