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

时间:2015-12-12 23:12:12

标签: playframework playframework-2.0 ebean playframework-2.4

我正在玩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=""

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

1 个答案:

答案 0 :(得分:0)

简答:

您需要的数据库配置是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正常工作。我并不完全清楚你要完成什么,但可能没有必要。

我希望我没有完全怀念你想要问的问题。