Gibt es eine Möglichkeit, alle Spring Beans zu drucken, die beim Start geladen werden? Ich verwende Spring 2.0.
91
Ja, nehmen Sie Kontakt auf ApplicationContext
und rufen Sie an.getBeanDefinitionNames()
Sie können den Kontext erhalten durch:
ApplicationContextAware
@Inject
/ @Autowired
(nach 2.5)WebApplicationContextUtils.getRequiredWebApplicationContext(..)
Verwandte Themen: Sie können die Registrierung jeder Bean auch erkennen, indem Sie eine BeanPostprocessor
Bean registrieren . Es wird für jede Bohne benachrichtigt.
ApplicationContextAware
Schnittstelle liegt darin, dass das Spring-Framework die Möglichkeit bietet , auf den Anwendungskontext zuzugreifen. Sie sollten es in der@Configuration
Klasse für den beabsichtigten Anwendungskontext platzieren.quelle
Drucken Sie alle Bean-Namen und ihre Klassen aus:
quelle
Mit Spring Boot und dem Aktuatorstarter
Sie können den Endpunkt überprüfen
/beans
quelle
Sie könnten versuchen anzurufen
Oder aktivieren Sie die Debug-Protokollierung für
org.springframework
. (Im Spring Boot verwendet das einen Parameter--logging.level.org.springframework=DEBUG
)quelle
ListableBeanFactory
ist eine Schnittstelle. Woher würde man eine Instanz einer Klasse bekommen, die diese Schnittstelle erweitert, um die MethodegetBeansOfType
oder eine andere Methode in der Schnittstelle auszuführen ? Ich sehe, dasApplicationContext
erweitert es, aber Ihr Beispiel zeigt nicht, wie man eines davon erwirbt.@Autowired ListableBeanFactory listableBeanFactory
und Sie erhalten eines (der Implementierungstyp sollte keine Rolle spielen)applicationContext.getBeanDefinitionNames () zeigt nicht die Beans an, die ohne BeanDefinition-Instanz registriert sind .
}}
Konsolenausgabe
Wie Sie in der Ausgabe sehen können, werden Environment, SystemProperties und SystemEnvironment- Beans nicht mit der context.getBeanDefinitionNames () -Methode angezeigt .
Frühlingsstiefel
Für Spring Boot-Webanwendungen können alle Beans mithilfe des folgenden Endpunkts aufgelistet werden.
}}
quelle
Mit können
spring-boot-starter-actuator
Sie leicht auf alle Bean zugreifen.Hier ist der Einrichtungsprozess:
Fügen Sie unten in die Gradle-Datei ein:
Fügen Sie es
management.security.enabled=false
in Ihre application.property-Datei einCall / Beans-Endpunkt :
Nach diesem Setup aktiviert Spring einige metrikbezogene Endpunkte. Einer der Endpunkte ist / bean. Nach dem Aufrufen dieser Endpunkte wird eine JSON-Datei bereitgestellt, die alle Ihre Beans einschließlich ihrer Abhängigkeit und ihres Umfangs enthält.
Hier ist ein Beispiel für eine JSON-Datei:
Weitere Informationen finden Sie unter den folgenden Links:
Hoffe das wird dir helfen. Vielen Dank :)
quelle
Hier ist eine andere Möglichkeit, alle Bean-Namen aus dem Spring-Anwendungskontext zu drucken:
quelle