我正在将一个部署为WAR的jee应用程序写入容器。
这个应用程序依赖于(maven dep)打包为JAR的java lib。
lib包含jee app用来与后端通信的客户端。
lib接受后端的基本uri(host + port + context-path)作为配置。
从jee app 配置lib的最佳方法是什么,以便可以为多个环境提供配置(例如,后端生产URI与测试URI不同)?
我读到了@Alternative注释和ContextParam,但两者看起来都是普通的java不能理解的特定的AKA ......
Maven Assembly似乎没有办法,因为它意味着每个环境必须部署到我们的maven repo一个工件。
更新1
如果jee应用程序每个环境(dev,test,prod)包含一个属性文件,并且可以通过普通的旧java构造函数将属性传递给lib,该怎么办?
答案 0 :(得分:2)
我会尝试为这个主题提供一些答案/想法。我会遵循这种方法:
java.lang.Class.getResourceAsStream(String)
)这样,图书馆的客户可以决定配置所在的位置,具体取决于他们的技术环境。
在JEE中,您可以使用ContextParam设置配置资源的位置,或设置特定的配置属性,或者只在类路径的标准位置提供配置资源。
如果使用Spring或类似的框架,则需要为应用程序提供配置。 Spring Boot为此提供了一些开箱即用的好方法。
基本思想是您必须为应用程序的操作员提供方法来影响配置。然后,可以根据配置是在开发人员的机器上运行,在单元/集成测试条件下,在分段环境中还是在生产中来调整配置。