Mam do czynienia ze starszą bazą kodu, w której klasa, która nie jest okablowana na wiosnę, musi uzyskać klasę, która jest podłączona na wiosnę zgodnie z. Miałem nadzieję, że utworzę klasę fabryczną, która została podłączona podczas uruchamiania, a następnie mógłbym po prostu wywołać metodę getInstance() w celu uzyskania obiektu przewodowego. Jaki jest najlepszy sposób na zrobienie tego?Spring Wire a Static Class
przykład:
public class LegacyA {
public void doSomething() {
...
Foo foo = FooFactory.getInstance();
...
}
}
public class FooFactory {
private static Foo foo;
public static Foo getInstance() {
if (foo == null) throw new IllegalStateException();
return foo;
}
}
trzeba FooFactory być okablowana na starcie, aby LegacyA można łatwo wywołać getInstance() tak, że powraca wystąpienie foo (który jest również fasoli zdefiniowane w kontekście aplikacji).
<bean id="legacyA" class="LegacyA"/>
<bean id="foo" class="Foo"/>
<!-- I need this bean to be injected with foo so that the FooFactory can return a foo -->
<bean id="fooFactory" class="FooFactory"/>
Edit: Musiałem ponownie pracować mój przykład trochę jak mam to nieco confuzzled we własnej głowie ...
Jak Foo jest wstrzykiwany do FooFactory? Seter, konstruktor, ...? – wds