我正在玩Play! 2.4我正在使用Ebean作为ORM工具。当我通过application.conf配置ebean并使用play ebean创建的默认Ebeanserver时,一切都很好。
我想要实现的是能够动态配置Ebeanserver并注入它。应用程序可以部署在不同的生产环境中,在每个环境中,URL,用户名和密码都可能会发生变化。所以我想存储可以在单独的配置文件中变化的参数,并以编程方式构建Ebeanserver对象。
我尝试过这个链接:http://ebean-orm.github.io/docs/setup/guice,但我没有成功。我的配置如下:
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=""
我想问题是我不清楚播放需要什么配置以及ebean需要什么。没有很多关于使用ebean和使用依赖注入的好文档。任何帮助是极大的赞赏。
答案 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正常工作。我并不完全清楚你要完成什么,但可能没有必要。
我希望我没有完全怀念你想要问的问题。