¿Cómo hacer la primavera de búsqueda Método de Inyección con anotaciones?
-
28-09-2019 - |
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?
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 .
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow