gpt4 book ai didi

java - 配置 war 内部依赖工件的属性

转载 作者:行者123 更新时间:2023-11-30 02:13:12 24 4
gpt4 key购买 nike

我正在编写一个 jee 应用程序,作为 WAR 部署到容器中。

此应用程序依赖于(maven dep)打包为 JAR 的 java lib。

该库包含 jee 应用程序用来与后端通信的客户端。

该库接受后端的基本 uri(主机+端口+上下文路径)作为配置。

从 jee 应用程序配置库的最佳方法是什么,以便可以为多个环境提供配置(例如后端生产 URI 与测试 URI 不同)?

我读到了有关 @Alternative 注释和 ContextParam 的内容,但两者似乎都是 jee 特定的,又名普通 java 无法理解的...

Maven Assembly 似乎不是一种可行的方法,因为它意味着必须为每个环境部署一个工件到我们的 Maven 存储库。

更新1

如果 jee 应用程序为每个环境(开发、测试、生产)包含一个属性文件,并且可以通过普通的旧 java 构造函数将属性传递到 lib,会怎么样?

最佳答案

我将尝试为该主题提供一些答案/想法。我会遵循这种方法:

  • 在库中提供后备配置文件。
  • 在库中实现默认行为,在类路径上查找优先级高于后备的预定义配置文件(例如通过 java.lang.Class.getResourceAsStream(String) )
  • 让库提供 Java-API 以从不同位置/资源读取配置。
  • 让该库提供 Java-API,以便直接从客户端代码更改特定配置设置。
  • 您还可以通过系统环境变量和/或命令行参数来配置您的库。

这样,库的客户端就可以根据其技术环境来决定配置所在的位置。

在 JEE 中,您可以使用 ContextParam 来设置配置资源的位置,或者设置特定的配置属性,或者只是在类路径上的标准位置提供配置资源。

如果您使用 Spring 或类似的框架,您就有很多其他可能性来为应用程序提供配置。 Spring Boot 对此提供了一些开箱即用的良好行为。

基本思想是您必须向应用程序运算符(operator)提供影响配置的方法。然后,可以根据它是在开发人员的机器上、在单元/集成测试条件下、在临时环境中还是在生产中运行来调整配置。

关于java - 配置 war 内部依赖工件的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49489212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com