Совет: использование параметра в модуле (JndiIntegration) - PullRequest
0 голосов
/ 24 января 2012

У меня есть такой модуль

public class JNDITransactionModule implements Module{

    @Override
    public void configure(Binder binder) {
        binder.bind(TransactionManager.class)
              .toProvider(
                   JndiIntegration.fromJndi(
                      TransactionManager.class, 
                      "URI TO TRANSACTION MANAGER"))
              .in(Scopes.SINGLETON);
    }
}

Ну, я думаю, что мой вопрос прост, но ... как я могу параметризовать значение "URI TO TRANSACTION MANAGER" ??

Я имею в виду, что-то вроде этого

public class JNDITransactionModule implements Module{

    @Override
    public void configure(Binder binder) {
           Properties props = getProperties("transaction.properties");
           Names.bindProperties(binder, props);

        binder.install(new TransactionModule());
        binder.bind(TransactionManager.class)
              .toProvider(
                   JndiIntegration.fromJndi(
                      TransactionManager.class, 
                      "get @Named('transaction.jndi-uri')"))
              .in(Scopes.SINGLETON);
    }
}

и файл конфигурации с именем транзакции.properties, который содержит это

  transaction.jndi-uri = URI TO TRANSACTION MANAGER

Спасибо !!!

1 Ответ

1 голос
/ 25 января 2012

Вы должны иметь возможность использовать отдельного поставщика или метод @ Provides . Следующее должно работать:

@Provides
@Singleton
TransactionManager provideTransactionManager(@Named("transaction.jndi-uri") String uri) {
    return JndiIntegration.fromJndi(TransactionManager.class, uri).get();
}
...