Ich habe eine Frühlingsbohne, sagen wir:
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class AImpl implements A {
public void setSomeDependency(D dependency) {
// This setter DOES NOT BELONG to interface A
}
}
<bean id="aImpl" class="AImpl"/>
Jetzt möchte ich die Integration testen, aber zuerst muss ich die Abhängigkeit nachahmen D
, weil es zu viel macht. Seit der AImpl
implementiert eine Schnittstelle und enthält eine transaktionale Annotation, der generierte Proxy ist nur mit der Schnittstelle kompatibel A
, damit ich das machen kann:
@Inject @Named("aImpl")
private A a;
aber kann nicht:
@Inject @Named("aImpl")
private AImpl a;
Daher kann ich meine Abhängigkeit nicht verspotten.
Bitte beachten Sie, dass das Hinzufügen void setSomeDependency(D dependency)
Schnittstelle A
ist keine Option, da sie keine geschäftliche Bedeutung hat. Weder verwendet es die proxy-target-class="true"
, da es viele andere Beans zerstört (dieses Attribut betrifft alle Beans im Kontext).
Gibt es eine Möglichkeit, den Proxy der injizierten Bohne aufzuheben? A
, damit ich es werfen konnte AImpl
?
mögliches Duplikat von Casting eines Spring’s Proxy-Objekts in die tatsächliche Laufzeitklasse
– skaffman
14. November ’11 um 13:39
@skaffman: Danke für den Hinweis, ich habe diese Frage zu den FAQ zum Spring-Tag hinzugefügt
– Tomasz Nurkiewicz
14. November ’11 um 13:43