如何在 playframework 中使用依赖注入创建 Ebeanserver?

Posted

技术标签:

【中文标题】如何在 playframework 中使用依赖注入创建 Ebeanserver?【英文标题】:How do I create Ebeanserver using dependency injection in playframework? 【发布时间】:2015-12-12 23:12:12 【问题描述】:

我正在与 Play 合作! 2.4 我使用 Ebean 作为 ORM 工具。当我通过 application.conf 配置 ebean 并使用 play ebean 创建的默认 Ebeanserver 时,一切都很好。

我想要实现的是能够动态配置 Ebeanserver 并注入它。该应用程序可以部署在不同的生产环境中,在每个环境中,url、用户名、密码可能会发生变化。因此,我想将可能变化的参数存储在单独的配置文件中,并以编程方式构建 Ebeanserver 对象。

我试过点击这个链接:http://ebean-orm.github.io/docs/setup/guice,但我没有成功。我的配置如下:

EbeanServerProvider.java

public class EbeanServerProvider implements Provider<EbeanServer> 

    @Override
    public EbeanServer get() 

        ServerConfig config = new ServerConfig();
        config.setName("mysql");
        config.loadFromProperties();
        config.setDefaultServer(true);
        return EbeanServerFactory.create(config);
    

使用guice绑定模块

bind(EbeanServer.class).toProvider(EbeanServerProvider.class).asEagerSingleton();

ebean.properties

datasource.default = mysql  
datasource.mysql.databaseDriver=com.mysql.jdbc.Driver
datasource.mysql.databaseUrl="jdbc:mysql://localhost/playdb"
datasource.mysql.username=root
datasource.mysql.password=""

application.conf

ebean.default = ["models.*]
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost/playdb"
db.default.username=root
db.default.password=""

我想问题是我不清楚play需要什么配置,ebean需要什么。没有很多关于使用 ebean 和玩依赖注入的好文档。任何帮助是极大的赞赏。

【问题讨论】:

我正在学习 Play 2.4 + Ebean,我意识到没有必要在 ebean.properties 上再次配置 datasource.*。 application.conf 上的 db.default.* 就足够了 【参考方案1】:

简答:

您需要的数据库配置是您在application.conf 下列出的那些。使用服务器的特定数据库连接信息为每个服务器创建一个新的 application.conf。出于安全原因,这些不会提交到您的项目 git 存储库。

详细回答:

如果您在不同的环境中部署相同的应用程序,您可以为每个环境创建一个配置并将其存储在类似/etc/default/ 的位置。在您的 build.sbt 中,添加对服务器上的 conf 文件的检查,例如 /etc/default/myproject.conf,您的特定数据库连接信息可以放在那里。

更新您的 build.sbt 以检查 conf。 (注意,$name.value 成为项目名称):

name := """myproject"""

javaOptions in Universal ++= Seq(
    s"-Dconfig.file=/etc/default/$name.value.conf"
)

从服务器上的 git 中拉下您的最新更改并运行 activator stage。当您运行可执行文件./target/universal/stage/bin/myproject 时,它将检查您的服务器特定的配置并使用这些设置。

如果您想在项目的 application.conf 中设置和使用一些默认配置,只需在服务器特定 conf 的顶部添加 include "application.conf"。您的自定义 conf 将覆盖在默认 application.conf 中设置的任何内容。

/etc/default/myproject.conf 文件的结构将与您的默认 application.conf 完全相同 - 只需将该服务器的真实连接值放入其中即可。

请记住,您可以将一个 ebean 插件 PlayEbean 添加到 build.sbt 文件中,这将使 ebean 正常工作。我不完全清楚您要完成什么,但可能没有必要。

我希望我没有完全错过你想问的问题。

【讨论】:

感谢您的回复。我不是特别喜欢将 conf 文件存储在服务器本身上。我在这里的问题可能并不完全清楚。我最近才清楚地知道我想做什么,所以我提出了一个新问题。这是链接:***.com/questions/34350725/…。

以上是关于如何在 playframework 中使用依赖注入创建 Ebeanserver?的主要内容,如果未能解决你的问题,请参考以下文章

Play 框架依赖注入

Playframework 2.4 单例,对象

Play framework + Scala:使用动作组合注入依赖

Play Framework 2.4 - 依赖注入替换 GlobalSettings.onStart()

当他们的构造函数参数被依赖注入时如何实例化子演员?

使用 Eclipse Scala IDE 中的 spring-data 注入测试 playframework 2.4