【问题标题】:Defer connection to datasources defined in application.conf延迟到 application.conf 中定义的数据源的连接
【发布时间】: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


    【解决方案1】:

    我想说你有两种方法可以做到这一点。

    一切都在戏剧中得到解释!文档:Additional configuration

    指定替代配置文件

    test.conf

    db.awesome.driver= com.mysql.jdbc.Driver
    db.awesome.url="jdbc:mysql://127.0.1.1/awesome"
    db.awesome.user=mr_awesome_tester
    db.awesome.password=justtesting
    

    live.conf

    db.awesome.driver= com.mysql.jdbc.Driver
    db.awesome.url="jdbc:mysql://127.0.0.1/awesome"
    db.awesome.user=mr_awesome
    db.awesome.password=omgthisisawesome
    

    在代码中你总是使用DB.withConnection("awesome")

    启动应用程序

    $ start -Dconfig.resource=test.conf
    

    $ start -Dconfig.resource=live.conf
    

    覆盖特定的配置键

    在你的情况下,这意味着:

    $ start -Ddb.awesome-live.deferCreation=true
    

    【讨论】:

    • 很好,谢谢!特别是 include "application.conf" 功能似乎非常适合我的场景。我将在单独的文件中简单地定义特定于环境的内容,而不必复制两个环境共有的配置。
    • @alexander.biskop 是的,这绝对是这样做的方法!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 2015-10-11
    相关资源
    最近更新 更多