Wie Frühling Lookup Methode Injection mit Anmerkungen zu tun?
-
28-09-2019 - |
Frage
Gibt es eine Möglichkeit Lookup Method Injection mit Anmerkungen zu benutzen?
In Anbetracht der folgenden Klasse:
@Service
public abstract class A {
protected abstract createB();
}
Um es an der Arbeit ich folgende im Frühjahr applicationContext.xml erklären muß:
<bean id="b" class="com.xyz.B">
</bean>
<bean id="a" class="com.xyz.A">
<lookup-method name="createB" bean="b"/>
</bean>
Auch wenn ich <context:component-scan base>
verwende ich habe es in der XML auch zu erklären. Nicht ein guter Ansatz, denke ich.
Wie es mit Anmerkungen zu tun?
Lösung
Es ist möglich, javax.inject.Provider
zu verwenden. Alle Dank geht an Phil Webb .
public class MySingleton {
@Autowired
private Provider<MyPrototype> myPrototype;
public void operation() {
MyPrototype instance = myPrototype.get();
// do something with the instance
}
}
Andere Tipps
Es ist auch möglich, mit org.springframework.beans.factory.ObjectFactory
, wenn Sie mit Frühlings-API halten mögen
public class MySingleton {
@Autowired
private ObjectFactory<MyPrototype> myPrototypeFactory;
public void operation() {
MyPrototype instance = myPrototypeFactory.getObject();
// do something with the instance
}
}
Sie können mehr in der
Es ist nur implementiert, mit Spring> = 4.1 Siehe Ticket .
Schließlich: Diskussion auf, wie es zu benutzen.