从 war 内部配置依赖工件的属性
configuring properties for dependent artifacts from inside a war
我正在编写一个作为 WAR 部署到容器的 jee 应用程序。
此应用依赖于 (maven dep) 打包为 JAR 的 java 库。
该库包含 jee 应用程序用来与后端对话的客户端。
该库接受后端的基本 uri(主机+端口+上下文路径)作为配置。
从 jee 应用程序配置库的最佳方法是什么 以便可以为多个环境提供配置(例如,后端生产 URI 与测试 URI 不同)?
我阅读了关于@Alternative 注释和 ContextParam 的内容,但两者似乎都是 jee 特定的 AKA,普通人无法理解 java...
Maven Assembly 似乎不是可行的方法,因为它意味着必须为每个环境部署一个工件到我们的 Maven 存储库。
更新 1
如果 jee 应用在每个环境(开发、测试、生产)中包含一个属性文件,并且可以通过普通的旧 java 构造函数将属性向下传递到 lib,会怎么样?
我将尝试为该主题提供一些答案/想法。我会遵循这种方法:
- 在库中提供后备配置文件。
- 在库中实现默认行为,在类路径上查找预定义的配置文件,该文件的优先级高于回退(例如通过
java.lang.Class.getResourceAsStream(String)
)
- 让库提供 Java-API 从不同的位置/资源读取配置。
- 让库提供 Java-API 以直接从客户端代码更改特定的配置设置。
- 您还可以提供通过系统环境变量和/或命令行参数配置库的可能性。
这样,库的客户可以根据他们的技术环境决定配置所在的位置。
在 JEE 中,您可以使用 ContextParam 来设置配置资源的位置,或者设置特定的配置属性,或者只是在类路径的标准位置提供配置资源。
如果您使用 Spring 或类似的框架,您有许多其他可能性来为应用程序提供配置。 Spring Boot 对此提供了一些很好的行为 out-of-the-box。
基本思想是您必须向应用程序的操作员提供影响配置的方法。然后可以根据它是 运行 在开发人员的机器上、在单元/集成测试条件下、在暂存环境中还是在生产中来调整配置。
我正在编写一个作为 WAR 部署到容器的 jee 应用程序。
此应用依赖于 (maven dep) 打包为 JAR 的 java 库。
该库包含 jee 应用程序用来与后端对话的客户端。
该库接受后端的基本 uri(主机+端口+上下文路径)作为配置。
从 jee 应用程序配置库的最佳方法是什么 以便可以为多个环境提供配置(例如,后端生产 URI 与测试 URI 不同)?
我阅读了关于@Alternative 注释和 ContextParam 的内容,但两者似乎都是 jee 特定的 AKA,普通人无法理解 java...
Maven Assembly 似乎不是可行的方法,因为它意味着必须为每个环境部署一个工件到我们的 Maven 存储库。
更新 1
如果 jee 应用在每个环境(开发、测试、生产)中包含一个属性文件,并且可以通过普通的旧 java 构造函数将属性向下传递到 lib,会怎么样?
我将尝试为该主题提供一些答案/想法。我会遵循这种方法:
- 在库中提供后备配置文件。
- 在库中实现默认行为,在类路径上查找预定义的配置文件,该文件的优先级高于回退(例如通过
java.lang.Class.getResourceAsStream(String)
) - 让库提供 Java-API 从不同的位置/资源读取配置。
- 让库提供 Java-API 以直接从客户端代码更改特定的配置设置。
- 您还可以提供通过系统环境变量和/或命令行参数配置库的可能性。
这样,库的客户可以根据他们的技术环境决定配置所在的位置。
在 JEE 中,您可以使用 ContextParam 来设置配置资源的位置,或者设置特定的配置属性,或者只是在类路径的标准位置提供配置资源。
如果您使用 Spring 或类似的框架,您有许多其他可能性来为应用程序提供配置。 Spring Boot 对此提供了一些很好的行为 out-of-the-box。
基本思想是您必须向应用程序的操作员提供影响配置的方法。然后可以根据它是 运行 在开发人员的机器上、在单元/集成测试条件下、在暂存环境中还是在生产中来调整配置。