Estoy tratando con una base de código heredado donde una clase que no está cableada en primavera necesita obtener una clase que es cableado en primavera. Esperaba crear una clase de fábrica que estuviera conectada al inicio y luego simplemente llamar al método getInstance() para obtener un objeto cableado. ¿Cuál es la mejor manera de hacerlo?Alambre de resorte una clase estática
Ejemplo:
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;
}
}
necesito FooFactory ser cableado en el arranque de modo que LegacyA simplemente puede llamar getInstance() de manera que devuelve una instancia de Foo (que es también un grano se define en el contexto de aplicación)
<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"/>
Editar: tenía que volver a trabajar mi ejemplo un poco, ya lo tengo un poco Confuzzled en mi propia cabeza ...
¿Cómo se inyecta Foo en FooFactory? Un setter, constructor, ...? – wds