如何在 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 framework + Scala:使用动作组合注入依赖