我在我的应用程序中使用com.google.inject.persist.jpa.JpaPersistModule
。配置位于persistence.xml
文件中,但有些属性是动态的,我不希望将它们存储在此文件中(例如javax.persistence.jdbc.url
等),而是从其他来源注入它们。
我知道有一种JpaPersistModule.properties(java.util.Properties p)
方法可以完全满足我的需要。问题是我没有看到将java.util.Properties
对象传递给模块的好方法。我不想在模块代码中明确地创建java.util.Properties
的实例,而是宁愿使用一些guice风格的机制来注入它。
这有可能吗?你如何解耦JPA模块及其配置属性?
答案 0 :(得分:0)
Module
通常是手动创建的,因为它们是在Injector
之前创建的。如果确实想要的话,你可以跳过一些箍来注入模块,例如创建一个注入器,使用它来创建一个或多个模块,然后使用它们创建一个子注入器。我真的没有看到这一点。手动创建Properties
并将其传递给我似乎不是什么大不了的事。
答案 1 :(得分:0)
试试这个
public class DbModule extends AbstractModule {
private final Properties properties;
public DbModule(Properties properties) {
this.properties = properties;
}
@Override
protected void configure() {
JpaPersistModule jpa = new JpaPersistModule("my-unit");
jpa.properties(properties);
jpa.configure(binder());
//bind other stuff here...
}
}