如何在servlet中添加环境值

问题描述 投票:0回答:1

我们有dev、predev、uat和prod,我需要写代码来实现不同的环境,我们的应用程序是用servlet开发的。

如果可能请分享我的代码

谢谢

java jsp servlets
1个回答
1
投票

总的来说,我认为你不应该编写依赖于它运行的环境的代码。这是因为你的代码变得与环境过于耦合,如果明天你想在其他地方运行代码(另一个环境最终可能上来)-你必须更改代码。

与其这样做,不如尝试了解环境的含义并将其映射到代码应响应的业务功能。 例如,假设您想在开发环境中运行 H2 数据库。和产品中的 Postgres(只是一个例子)。 所以你可以这样写代码:

if( env == dev) {
   run something in H2
} else if (env == prod) {
   run something in Postgres
}

但是考虑一个不同的方法:

Dev env 意味着您将使用 H2,因此为每个环境定义一个配置(在某些文件或其他外部文件中)。

dev.yml
dbType : H2
prod.yml
dbType: Postgres

现在你的产品应该支持 H2 和 Postres 所以之前的代码片段变成:

if( dbType == H2) {
   run something in H2
} else if (dbType == Postgres) {
   run something in Postgres
}

所以你不再依赖于环境了。

现在至于如何提供这种配置的技术部分——这取决于您的部署。一种方法是添加指向文件的环境变量。另一种方法是使用一些配置服务器(它更高级)——这完全取决于您的实际需求,因此如果没有更多细节,很难提供最适合您的解决方案……

© www.soinside.com 2019 - 2024. All rights reserved.