Лучший способ инициализировать JpaPersistModule - PullRequest
0 голосов
/ 14 декабря 2011

Я использую 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 и его свойства конфигурации?

Ответы [ 2 ]

0 голосов
/ 10 марта 2013

Попробуйте это

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...
}
}
0 голосов
/ 14 декабря 2011

Module обычно создаются вручную, потому что они создаются до Injector.Вы можете перепрыгнуть через несколько циклов, чтобы внедрить модуль, если вы действительно хотите, например, создать один инжектор, использовать его для создания одного или нескольких модулей, а затем создать дочерний инжектор, используя их.Я не вижу смысла, хотя.Создание Properties вручную и передача их мне не кажется большой проблемой.

...