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.

4 myśli na temat “Wstrzykiwanie pól statycznych w Guice

  1. o! jak znajdę czas wieczorem to spróbuję zrobić to samo przy pomocy aj i staticinitialization() 🙂

Napisz odpowiedź

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax