Spring适用于多种环境的最佳方法

时间:2014-10-29 11:56:36

标签: java spring environment spring-environment

我有以下内容:

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

我有很多环境:

  • 开发
  • 同源物
  • 生产

每个人都有System A的不同网址。所以我想创建一个集成这些系统的项目。由于All Systems使用Jersey和Spring,我可以创建一个过滤器(平针织物),以便在用户未获得授权的情况下中止请求。

所以我的想法是创建Integration System,它将是一个带有Jerseys过滤器的JAR,并使用父配置(来自Spring的Active配置文件)来获取正确的URL。我甚至可以使用这个JAR使 System B System D 进行通信,如果我可以做到这一点。

诀窍是,使这个JAR根据环境(在父项目上设置)获取正确的.properties文件。说实话,我不知道从哪里开始。

阅读Spring环境的DOC我发现:

  

如果更简单的方法可以完成工作,请不要使用配置文件。如果配置文件之间唯一的变化是属性值,那么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

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

1 个答案:

答案 0 :(得分:1)

在这样的"简单" case我只会使用属性文件来配置url,并为不同的环境(dev,prod,..)提供不同的配置文件和一个(相同的命名属性),例如。

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

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

编辑:或者您可以使用环境变量来配置"特定于环境的设置(名称巧合:))。请注意,您也可以在一台计算机内部使用不同的环境。有关详细信息,请查看this

export AUTH_URL="http://localhost:8081/systemA/authorize"