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