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

标签 java spring environment spring-environment

我有以下内容:

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

我有很多环境:

  • 开发
  • 同系物
  • 生产

对于系统 A,每个系统都有不同的 URL。所以我想创建一个项目来集成这些系统。由于所有系统都使用 Jersey 和 Spring,因此我可以创建一个过滤器 (jersey),该过滤器将在用户未经授权的情况下中止请求。

因此,我们的想法是创建一个集成系统,它将是一个带有 Jerseys 过滤器的 JAR,并使用父配置(来自 Spring 的 Activity 配置文件)来获取正确的 URL。如果我能做到这一点,我什至可以使用这个 JAR 来使系统 B系统 D 进行通信。

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

阅读我发现的 Spring 环境文档:

Do not use profiles if a simpler approach can get the job done. If the only thing changing between profiles is the value of properties, Spring's existing PropertyPlaceholderConfigurer / may be all you need.

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

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

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

最佳答案

在这种“简单”的情况下,我只会使用属性文件来配置 url,并针对不同的环境(开发、产品等)使用不同的配置文件(具有相同的命名属性),例如

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

您可以手动管理属性文件(例如在 jar/war 之外),也可以使用 maven profiles使 jar/war 文件特定于您的环境。但我认为不需要 Spring 配置文件。

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

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

关于java - Spring 适用于多种环境的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26629724/

相关文章:

用于ajax请求的Java服务器

java - Spring数据(REST)和@Query : optional list as param

Java 应用程序未使用正确的 PATH 环境变量

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

javascript - J'avaScript 不在 HTML 中

java - Maven过滤乱码特殊字符

jvm - OpenJDK 使用 printf 进行调试?

java - Gson - 如何使用嵌套 JSON 解析动态 JSON 字符串?

java - Spring Json 日期和时间格式化

java - 如何在运行时动态连接到数据源?