guice JpaPersistModule具有运行时配置

时间:2015-10-14 14:09:52

标签: jpa dependency-injection guice guice-persist

我需要与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属性映射是通过引用注入的,所以我的运行时更改应该变得可见,但如果将来会发生什么变化呢?

解决此类冲突的正确方法是什么?

0 个答案:

没有答案