假设我有一个名为“awesome”的数据库,它位于实时服务器上,同时在登台服务器上复制以进行测试。我的网络应用程序基于使用 Scala 的 Play 2.1.1。
所以我在application.conf文件中定义了这些数据源:
db.awesome-test.driver= com.mysql.jdbc.Driver
db.awesome-test.url="jdbc:mysql://127.0.1.1/awesome"
db.awesome-test.user=mr_awesome_tester
db.awesome-test.password=justtesting
db.awesome-live.driver= com.mysql.jdbc.Driver
db.awesome-live.url="jdbc:mysql://127.0.0.1/awesome"
db.awesome-live.user=mr_awesome
db.awesome-live.password=omgthisisawesome
根据我所处的环境,我想使用DB.withConnection("awesome-test")
或DB.withConnection("awesome-live")
。我通过配置中的另一个值来控制它;所以我例如放在environment=awesome-live
那里,然后通过Play.configuration
.
现在,问题是显然 play 尝试立即创建与配置中定义的每个数据源的数据库连接。A)这取决于我所处的环境。例如在登台机器上我会得到这样的东西(当然图片只是一个模型),因为无法访问实时数据库:
...尽管完全没有必要尝试连接到该数据库,因为它永远不会在这种环境中使用。B)即使连接可以工作,当然当只需要两个连接中的一个时创建两个连接(实时和测试)是不可行的。
有没有办法告诉 Play 推迟/推迟数据库连接的创建,直到它真正需要它(例如,何时DB.getConnection("...")
或DB.withConnection("...")
某事为该数据源调用)?我在想类似的东西db.awesome-live.deferCreation=true
。
干杯,亚历克斯