Ich habe es mit einer Legacy-Code-Basis zu tun, wo eine Klasse, die im Frühling nicht verdrahtet ist, eine Klasse erhalten muss, die verdrahtet im Frühjahr ist. Ich hatte gehofft, eine Factory-Klasse zu erstellen, die beim Start verdrahtet wurde, und dann konnte ich einfach die Methode getInstance() aufrufen, um ein verdrahtetes Objekt zu erhalten. Was ist der beste Weg, dies zu tun?Federdraht eine statische Klasse
Beispiel:
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;
}
}
I FooFactory muß beim Start verdrahtet werden, so dass LegacyA einfach nennen getInstance(), so dass es eine Instanz von Foo zurückgibt (die auch eine Bohne in dem Anwendungskontext definiert ist).
<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: Ich hatte mein Beispiel ein wenig neu zu arbeiten, wie ich es ein bisschen bekam Confuzzled in meinem eigenen Kopf ...
Wie wird Foo in FooFactory injiziert? Ein Setzer, Konstrukteur, ...? – wds