Federdraht eine statische Klasse

Ich habe es mit einer älteren Codebasis zu tun, in der eine Klasse, die nicht im Frühjahr verkabelt ist, eine solche Klasse erhalten mussist im Frühjahr verkabelt. Ich hatte gehofft, eine Factory-Klasse zu erstellen, die beim Start verkabelt wurde, und dann konnte ich einfach die getInstance () -Methode aufrufen, um ein verkabeltes Objekt zu erhalten. Was ist der beste Weg, um dies zu tun?

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;
    }
}

Ich muss FooFactory beim Start verkabeln, damit LegacyA einfach getInstance () aufrufen kann, damit es eine Instanz von Foo zurückgibt (die auch eine im Anwendungskontext definierte Bean 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 musste mein Beispiel ein wenig überarbeiten, da ich es in meinem eigenen Kopf ein bisschen verwirrt hatte ...

Antworten auf die Frage(3)

Ihre Antwort auf die Frage