Wstrzykiwanie pól statycznych w Guice
Czasami życie płata nam figla i należy jakoś obsłużyć sytuację, w której dana klasa ma pole statyczne wymagające wstrzyknięcia.
Oczywiście takie sytuacje mają miejsce zazwyczaj wtedy gdy trafiamy na jakiś kod zastany, w którym jest burdel i chcemy w miarę niskim pozbyć się operatora new.
Okazuje się, że obsłużenie takiej sytuacji w Guice jest dziecinnie proste. Na poniższym listingu przykładowa konfiguracji wykonująca wstrzyknięcie statyczne:
Listing 1. Wstrzyknięcie statycznego pola.
public class SimpleUserModule extends AbstractModule {
@Override
protected void configure() {
install(new FactoryModuleBuilder().implement(SimpleUser.class,
SimpleUser.class).build(SimpleUserFactory.class));
requestStaticInjection(SimpleUser.class);
}
}
Na listingu jest też konfiguracja dla Assisted Injection, ale o tym przy innej okazji. Jak widać samo wstrzyknięcie ogranicza się do wywołania dodatkowej metody. Jedyną rzeczą, o którą należy się martwić jest dostarczenie wszystkich zależności.
I na koniec mała sonda:
- ma być więcej krótkich wpisów, ale często.
- ma być więcej długich wpisów, ale rzadziej.