我正在使用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和使用依赖项注入,并没有很多好的文档。任何帮助都是非常感谢的。
发布于 2015-12-14 16:29:56
简短回答:
您需要的数据库是您在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时,它将检查您的服务器特定的conf并使用这些设置。
如果要在项目的application.conf中设置和使用某些默认配置,只需在服务器特定的conf顶部添加include "application.conf"即可。您的自定义conf将覆盖默认application.conf中设置的任何内容。
/etc/ default /myproject.conf文件的结构与默认的application.conf完全相同--只需将该服务器的实际连接值放入其中即可。
请记住,有一个ebean插件PlayEbean,您可以将它添加到build.sbt文件中,这将允许ebean正常工作。我不太清楚你想要完成什么,但这也许是不必要的。
我希望我没有完全错过你想问的话。
https://stackoverflow.com/questions/34246106
复制相似问题