【发布时间】:2013-04-07 21:00:27
【问题描述】:
假设我有一个名为“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。
干杯,亚历克斯
【问题讨论】:
标签: database scala configuration playframework app-config