Frage

Mir ist bewusst, dass die Reihenfolge des Bean-Ladens implizit durch Abhängigkeiten und transitive Abhängigkeiten bestimmt wird.

Stellen Sie sich vor, Sie haben eine Reihe von kommentierten Beans, die Ihnen Metadaten liefern, die Sie auf eine andere Gruppe von AwareBeans anwenden möchten.Erst nachdem Sie alle Metadaten von N Beans gesammelt haben, können Sie die AwareBeans nachbearbeiten.Sie verwenden normalerweise org.springframework.beans.factory.config.BeanPostProcessor für solche Sachen.Wie gehe ich mit der Bestellung um?Ich denke, dass sogar das Einrichten depends-on explizit hat Abhängigkeiten in Bezug auf die Ladereihenfolge keinen Vorrang, oder?

Es gibt eine Schnittstelle org.springframework.core.Ordered dies hängt nur von der Reihenfolge der angewendeten Beanpostprozessoren ab, nicht jedoch von der Reihenfolge der Bohnen.

Ich könnte verwenden org.springframework.beans.factory.config.BeanFactoryPostProcessor die Bean-Definition enthält jedoch nicht genügend Informationen vor der Bean-Instanziierung.Beispielsweise beanDef.getBeanClass() gibt den Namen der Bean-Klasse usw. zurück.

Könntest du dir auf irgendeine andere Weise vorstellen, wie ich tun soll, was ich will?

War es hilfreich?

Lösung 2

Ich habe es gelöst mit org.springframework.beans.factory.config.BeanFactoryPostProcessor und Laden von Klassen nach Klassenladeprogramm, damit ich Reflektion verwenden kann, um die Anmerkungen zu erfassen.Ich denke, es sollte nichts kaputt machen, denn danach, wenn der Frühling Klassen lädt, prüft der Klassenlader der Bean-Klassen, ob die Klasse bereits geladen ist und wenn ja, lädt er sie nicht.Ansonsten lädt es es.

Andere Tipps

Sie können:

a) Fügen Sie alle Ihre Metadaten-Beans in Ihre ein BeanPostProcessor.

b) Lassen Sie Ihren Postprozessor beim Start aktiv alle Metadaten-Beans aus dem Anwendungskontext abrufen.

Jeder Weg hat Vor- und Nachteile, aber der Effekt ist der gleiche:nach BeanPostProcessor nach der Konstruktion wird auch jede Metadaten-Bean bereits nachbearbeitet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top