2012-03-28 2 views
0

Ich habe Klasse A, die eine Schnittstelle implementiert I. So konfiguriert Feder dies als eine Bohne, die zu einer anderen Bohne der Klasse B als eine Eigenschaft injiziert wird. Klasse B Code versucht, die vollständig qualifizierten Namen (Paket + Klassenname) der Klasse A mit der injizierten Eigenschaft zu erhalten [i.getClass(). ToString()] ... Dies führt dazu, nur den Proxy-Namen bekommen des Objekts Klasse $ Proxy27 ... Ich versuchte auch i.getClass(). getCanonicalName(); gleiche Ergebnisse ...Wie bekomme ich die Klasse von einer Bean, die einen AOP-Proxy durchläuft?

Also, was könnte die Ursache dafür sein, den Proxy-Namen anstelle des Klassennamens zu bekommen? Ich brauche den voll qualifizierten Namen

+2

Was ist die Frage? –

+0

Sie sollten Ihre Frage *** in *** die Frage stellen. Auf diese Weise kann Ihnen jemand helfen. –

Antwort

1

Scheint wie Spring wickelt Ihre Bean in AOP-Proxy, z. um einige Ratschläge zu geben oder um den Umfang der injizierten Bean zu erhalten (zum Beispiel wenn Nicht-Singleton-Bean in ein Singleton injiziert wird).

4

Wenn Sie auf den Klassennamen erhalten möchten, gehen Sie wie folgt vor:

Class<?> targetClass = AopUtils.getTargetClass(bean); 
+0

gleiche Ergebnisse:/.. Die Bean, die ich injiziere, implementiert Spring Batch ItemProcessor Schnittstelle. Also verwende ich deinen Vorschlag, ich habe AopUtils.getTargetClass (itemProcessor); Dies ist eine Eigenschaft der Klasse, die den Code ausführt (BatchRunTaskListProcessorWrapper), der auch ItemProcessor implementiert. aber dieser Aufruf gibt mir den Namen der ausführenden Klasse (BatchRunTaskListProcessorWrapper.process()) – sonx

Verwandte Themen