Я хочу создать глобальное состояние (объект данных, а не объект службы).Как реализовать глобальное состояние с помощью guice?
Я создал класс MyDataObject
.
Я хочу, чтобы избежать регулярного глобального состояния,
но предпочитают использовать инъекции Guice
зависимостей.
Однако все учебные пособия показывают, как установить DI для служебного объекта с регистрацией для интерфейса.
Как я могу использовать инъекцию Guice
для моей потребности?
Редактировать
Я попытался:
общественного класса AppInjector расширяет AbstractModule {
@Override
protected void configure() {
bind(E2eResult.class).toInstance(new E2eResult());
}
}
с:
@Test
public void sendSearchRequest() throws Exception {
...
e2eResult = injector.getInstance(E2eResult.class);
timerUtils.setTimeOut(criticalBlockTimeOutMilli);
timerUtils.startStopWatch();
...
long timeElapsed = timerUtils.stopStopWatch();
e2eResult.runTime = timeElapsed;
...
}
и:
public static void main(String... args) throws ClassNotFoundException, IOException {
Injector injector = Guice.createInjector(new AppInjector());
Result result = runTest(classAndMethod);
E2eResult e2eResult = injector.getInstance(E2eResult.class);
}
и все же я видел в main
был без новой долгосрочной стоимости.
Я не думаю, что я действительно понимаю ваш вопрос ... Сделайте привязку [привязка экземпляра] (https://github.com/google/guice/wiki/InstanceBindings) или [singleton] (https://github.com/google/guice/wi ki/Scopes) могут вам помочь? – NiziL
Нет, поскольку он связан с привязкой конкретных классов к интерфейсу. здесь: '@Singleton Открытый класс InMemoryTransactionLog реализует TransactionLog {' my dataObject не реализует никакого интерфейса. –
Не обязательно, см. Мой ответ – NiziL