2017-01-12 10 views
0

私はかなりVertxを使い始めていますし、実際のデータベース使用の例を見つけようとしています。適切なVertxデータベースのエチケット

共有データベースオブジェクトを作成するVerticleがあります(ルーティングを処理する多くのクラスがありますが、メインクラス以外の共有データベースを使用したいのですが、他のクラスのコンストラクタでデータベースオブジェクトを渡すことはできますが、私はVERTXがこれを行うには、いくつかのより良い方法を持っていると確信している。

public void start() { 
    ... 
    this.postgreSQLClient = PostgreSQLClient.createShared(vertx, sqlClientConfig); 
    ... 
} 

誰もがデータベースの現実的な実装では、任意のJava VERTX例を持っていますか?

は、事前にありがとうございます。

答えて

1

ジャストspecify a pool name

異なるクライアントが同じプール名を指定して同じVert.xインスタンスと を使用して作成されている場合は、それらが同じデータソースを共有します。これを行う際に、最初の呼び出しで提供された設定が使用されることを

public void start() { 
    this.postgreSQLClient = PostgreSQLClient.createShared(vertx, sqlClientConfig, "my-shared-client"); 
} 

注:

だからあなたの例を更新します。後続の呼び出しは、単に既存のクライアントを返します。

+0

これで、どこからでもcreateSharedを実行できますか? –

+0

@AlexHaslam正確に(同じ名前を使って!) – tsegismont

+0

ありがとう!ちょっと奇妙な気分だが、うまくいく! –

2

依存性注入を使用します。私はGuice は、ここでの例です使用しています

Main.java

//within main function where you have object of vertx 
Guice.createInjector(new AppInjector(vertx)); 

AppInjector.java

//Create an Injector file and bind your injections 
PostgreSQLClient postgreSQLClient = PostgreSQLClient.createShared(vertx, sqlClientConfig, "my-shared-client"); 
bind(PostgreSQLClient.class).annotatedWith(Names.named("DBClient")).toInstance(postgreSQLClient); 

UserService.java

public class UserService { 

    @Inject 
    @Named("DBClient") 
    private PostgreSQLClient client; 

} 

あなたがソースを見つけることができますコードhere

+0

ありがとうございます。また、良い方法ですが、@ tsegismontによってHighlightedとしてデフォルトのVertxメソッドが得られます これを覚えてupvoteします。 –

関連する問題