1

我有以下内容:

  • 系统 A - 授权 (REST API)
  • 系统 B - 需要检查身份验证
  • 系统 C - 需要检查身份验证
  • 系统 D - 需要检查身份验证

我有很多环境:

  • 发展
  • 同系物
  • 生产

每个都有不同的 URL System A。所以我想创建一个项目来整合这些系统。由于所有系统都使用 Jersey 和 Spring,我可以创建一个过滤器(jersey),以在用户未获得授权的情况下中止请求。

所以我们的想法是创建Integration System一个带有 Jerseys 过滤器的 JAR,并使用父配置(来自 Spring 的活动配置文件)来获取正确的 URL。如果我能做到这一点,我什至可以使用这个 JAR 让系统 B也与系统 D通信。

诀窍是,让这个 JAR 基于环境(在父项目上设置)获得正确的 .properties 文件。老实说,我不知道从哪里开始。

阅读 Spring Environment 的文档我发现:

如果更简单的方法可以完成工作,请不要使用配置文件。如果配置文件之间唯一变化的是属性的值,那么 Spring 现有的 PropertyPlaceholderConfigurer / 可能就是您所需要的。

我可以有 3 个不同的属性文件(开发、同源或生产),或者我可以有一个具有不同键的属性文件:

system.a.url.develpment=http://localhost:8080/systemA/authorize
system.a.url.homolog=http://localhost:8081/systemA/authorize
system.a.url.production=http://api.systemA.com/authorize

最好的方法是什么?你会怎么做?

4

1 回答 1

1

在这种“简单”的情况下,我只会使用属性文件来配置 url,并为不同的环境(dev、prod、..)使用不同的配置文件(同名属性),例如

system.a.url=http://localhost:8081/systemA/authorize

您可以手动管理您的属性文件(例如,在您的 jar/war 之外),或者您可以使用maven 配置文件为您的环境制作特定的 jar/war 文件。但我认为不需要弹簧型材。

编辑:或者,您可以使用环境变量来“配置”特定于环境的设置(名称中的巧合:))。请注意,您也可以在一台机器内拥有不同的环境。有关更多详细信息,请检查例如this

export AUTH_URL="http://localhost:8081/systemA/authorize"
于 2014-10-29T12:05:52.803 回答