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

如何在playframework中使用依赖项注入创建Ebeanserver?,playframework,playframework-2.0,ebean,playframework-2.4,Playframework,Playframework 2.0,Ebean,Playframework 2.4,我在玩!2.4我使用Ebean作为ORM工具。当我通过application.conf配置ebean并使用play ebean创建的默认Ebeanserver时,一切都很好 不过,我想实现的是能够动态配置Ebeanserver并注入它。该应用程序可以部署在不同的生产环境中,在每个环境中,url、用户名和密码可能会更改。因此,我希望将可能变化的参数存储在单独的配置文件中,并以编程方式构建Ebeanserver对象 我尝试了以下链接:,但没有成功。我的配置如下所示: EbeanServerProvi

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

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

我尝试了以下链接:,但没有成功。我的配置如下所示:

EbeanServerProvider.java 埃宾酒店 application.conf
我想问题是我不清楚play需要什么配置,ebean需要什么配置。关于使用ebean和使用依赖注入的文档并不多。非常感谢您的帮助

简短回答:

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

详细答案:

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

更新build.sbt以检查配置(注意,${name.value}将成为项目名称):

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

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

etc/default/myproject.conf文件的结构将与default application.conf完全相同——只需将该服务器的实际连接值放在其中即可

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


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

谢谢你的回复。我并不特别喜欢将conf文件存储在服务器本身上。我在这里的问题可能还不完全清楚。我最近才清楚地知道我想做什么,所以我提出了一个新问题。以下是链接:。我正在学习Play 2.4+Ebean,我意识到没有必要在Ebean.properties上再次配置datasource.*。在application.conf上使用db.default.*就足够了
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);
    }
}
bind(EbeanServer.class).toProvider(EbeanServerProvider.class).asEagerSingleton();
datasource.default = mysql  
datasource.mysql.databaseDriver=com.mysql.jdbc.Driver
datasource.mysql.databaseUrl="jdbc:mysql://localhost/playdb"
datasource.mysql.username=root
datasource.mysql.password=""
ebean.default = ["models.*]
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost/playdb"
db.default.username=root
db.default.password=""
name := """myproject"""

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