情况是,我有两个api项目,API A向HTTP B发送HTTP请求。两个API均部署到开发和生产环境。
我想实现的目标是:根据特定的配置文件(开发人员或生产人员)构建项目,以便代码可以使用特定的baseurl在正确的环境中与正确的api进行对话。
因此,如果我基于prod标志构建API A,我希望它使用特定的网址向在其自身的prod环境中部署的API B发出http请求。
似乎您是在指Maven的配置文件,但是您应该检查一下弹簧配置文件。这个概念应该改变:
您不应该build用于不同环境的不同工件。
相反,在服务A中创建弹簧轮廓:
application-dev.properties:
url.addr=dev-service-host:1234
application-prod.properties:
url.addr=prod-service-b-host:4321
然后使用--spring.profiles.active=dev
(或prod
)标志运行应用程序。
Spring boot将自动加载正确的定义,因为dev / prod与属性文件的后缀匹配
您可以将Spring-Boot配置文件定义为:
spring.profiles.active=prod
您还应该在.properties
中分析resources
文件:
在application-dev.properties
中,您应该有api.b.url={api_b_url_on_dev_environment}
在application-prod.properties
中,您应该有api.b.url={api_b_url_on_prod_environment}
或者如果您不想在更改属性后重新编译应用程序,则可以在.properties
文件之外使用。
为了使它们在应用程序的部署期间包括在内,请执行以下操作:
config
目录中添加application-dev.properties
和application-prod.properties
--spring.profiles.active=dev
和--spring.config.additional-location=config/application.properties
这样,外部配置文件属性将包含在部署过程中。这些.properties
文件在Spring中具有最高优先级。