Spring ApplicationContext.getBean (Klasse c) funktioniert nicht für Proxy-Klassen

Ich muss Beans über ihren Klassentyp nachschlagen. Wenn die Beans von einem Proxy umschlossen wurden (einige Methoden sind @Transactional), kann der ApplicatoinContext sie nicht finden. Ich finde, wenn ich sie über eine Schnittstelle nachschlage, funktioniert es, aber in diesem Fall arbeite ich mit einem konkreten Klassentyp. Ich weiß, dass die Bean von dem Typ ist, den ich suche, aber die Methode getBean () schlägt fehl.

Ich kann das Problem im AbstractBeanFactory-Code von Spring debuggen (und beheben). Das Problem ist, dass der Typ der beanInstance mit dem Typ verglichen wird, den ich anfordere, aber die beanInstance.getClass () ist ein Proxy. AbstractBeanFactory sollte dies ausgleichen und den Typ mit der Zielklasse des Proxys vergleichen.

Ich habe eine Lösung dafür, aber ich möchte keine gepatchte Version von Spring verwenden, und ich vermute, es muss etwas geben, das ich konfigurieren kann, damit dies funktioniert, oder ist das wirklich ein Fehler?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage