5

とデータソースを共有する必要がありますJpaPersistModule。このデータソースは、guice インジェクターによって提供されます。

構成フェーズでモジュールをビルドする必要がある問題ですが、データソースは実行時にのみ使用できます。

現在、次のコードがあります。

public class MyJpaConfigurationModule implements Module {

   private Map<String, Object> jpaProperties = new HashMap<>();
   private Module jpaModule = new JpaPersistModule("peristenceUnit").properties(jpaProperties);

   public void configure(Binder binder) {
      binder.requestInjection(this);
      binder.install(jpaModule);
   }

   @Provides @Singleton
   public DataSource provideDatasource() {
       return ..... // some data source
   }

   @Inject
   public void setJpaProperties(DataSource dataSource, PersistService persistService) {
      jpaProperties.put("dataSource", dataSource);

      persistService.start();
   }
}

確認したところ、jpa プロパティ マップは参照によってどこにでも挿入されているように見えるため、ランタイムの変更が表示されるはずですが、これが将来変更された場合はどうなりますか?

このような競合を解決する正しい方法は何ですか?

4

0 に答える 0