Pregunta

¿Hay alguna manera de utilizar la búsqueda Método de Inyección mediante anotaciones?

Dada la siguiente clase:

@Service
public abstract class A {


    protected abstract createB();

}

Con el fin de conseguir que funcione tengo que declarar en la primavera de applicationContext.xml lo siguiente:

<bean id="b" class="com.xyz.B">
</bean>

<bean id="a" class="com.xyz.A">
    <lookup-method name="createB" bean="b"/>
</bean>

A pesar de que estoy usando <context:component-scan base> tengo que declarar también en el XML. No es un enfoque bien creo.

¿Cómo hacerlo con anotaciones?

¿Fue útil?

Solución

Es posible utilizar javax.inject.Provider. Todas las gracias a Phil Webb .

public class MySingleton {

  @Autowired
  private Provider<MyPrototype> myPrototype;

  public void operation() {
    MyPrototype instance = myPrototype.get();
    // do something with the instance
  }

}

Otros consejos

También es posible con org.springframework.beans.factory.ObjectFactory si desea mantenerse al día con la API de primavera

public class MySingleton {

  @Autowired
  private ObjectFactory<MyPrototype> myPrototypeFactory;

  public void operation() {
    MyPrototype instance = myPrototypeFactory.getObject();
    // do something with the instance
  }
}

Puede leer más en el documentación .

Se lleva a cabo solamente con Spring> = 4.1 Ver la billete .

Finalmente introdujo como @Lookup anotación. Aquí es discusión sobre el uso de la misma.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top