2015-12-12 84 views
2

我正在使用Play! 2.4,我使用Ebean作爲ORM工具。當我通過application.conf配置ebean並使用由ebean創建的默認Ebeanserver時,這一切都很好。如何在playframework中使用依賴注入來創建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); 
    } 
} 

使用綁定模塊吉斯

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和依賴注入方面沒有太多好的文檔。任何幫助是極大的讚賞。

+0

我在學習Play 2.4 + Ebean,並且我意識到沒有必要在ebean.properties上再次配置datasource。*。在application.conf上使用db.default。*就夠了 –

回答

0

簡短的回答:

數據庫CONFIGS你需要的是你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中設置和使用一些默認配置,只需在服務器特定配置的頂部添加include "application.conf"即可。您的自定義conf將覆蓋默認application.conf中設置的任何內容。

/etc/default/myproject.conf文件的構造方式與默認的application.conf完全相同 - 只需將該服務器的實際連接值放在那裏即可。

請記住,您可以將ebean插件PlayEbean添加到build.sbt文件中,該文件將允許ebean正常工作。我並不完全清楚你想要完成什麼,但可能沒有必要。

我希望我沒有完全想念你想問的問題。

+0

感謝您的回覆。我不特別喜歡將conf文件存儲在服務器上。我可能在這裏沒有完全清楚我的問題。我最近只是清楚瞭解自己想做什麼,因此我提出了一個新問題。這裏是鏈接:http://stackoverflow.com/questions/34350725/how-can-i-override-plays-default-ebean-server-configuration。 – jesukumar