在某些环境中将 application.conf 中的数据库对象覆盖为无操作

Overriding a Database object in application.conf to no-op in certain environments

我正在尝试设置一个具有多个数据库连接的应用程序(一些用于只读,一些用于读写)。

95% 的时间我都希望两者都被配置,因此,我已经适当地指定了环境变量以允许这种情况。

但是,在一些环境中,我想禁用其中一个数据库连接池,但我不知道该怎么做,除了默认排除该池之外,在 95% 的情况下环境,请手动指定。

这是我现在 application.conf 中的内容:

db.neo4j = {
    driver: org.neo4j.jdbc.Driver
    ...
}

有没有一种方法可以 运行 玩,这样当我这样做时: ./bin/run-app 我可以指定不加载该 neo4j 数据库连接?

我尝试了以下所有方法均无济于事:

./bin/run-app -Ddb.neo4j=null
./bin/run-app -Ddb.neo4j={}
./bin/run-app -Ddb.neo4j=None

每次我 运行 时,我都会得到错误 neo4j has type STRING rather than OBJECT

谢谢!

您可以使用多个 .conf 文件并准确指定 which one to use when starting your application。每个实例:

./bin/run-app -Dconfig.resource=prod.conf

因此,您可以有一个包含所有必要配置的 conf 文件,而另一个根本不配置 db.neo4j。为避免重复,您可以拥有一个包含所有配置(不包括 db.neo4j)的文件,然后拥有另一个仅包含 db.neo4j:

的文件

文件conf/prod.conf:

include "application.conf"

db.neo4j = {
    driver: org.neo4j.jdbc.Driver
    ...
}