Existe-t-il un moyen d'imprimer tous les beans de printemps chargés au démarrage? J'utilise Spring 2.0.
95
Oui, attends ApplicationContext
et appelle.getBeanDefinitionNames()
Vous pouvez obtenir le contexte en:
ApplicationContextAware
@Inject
/ @Autowired
(après 2,5)WebApplicationContextUtils.getRequiredWebApplicationContext(..)
Related: Vous pouvez également détecter l'enregistrement de chaque bean en enregistrant un BeanPostprocessor
bean. Il sera notifié pour chaque grain.
ApplicationContextAware
interface est que le framework Spring lui donne la possibilité d'accéder au contexte de l'application. Vous devez le placer dans la@Configuration
classe du contexte d'application prévu.la source
Imprimez tous les noms de bean et ses classes:
la source
Avec Spring Boot et le démarreur de l'actionneur
vous pouvez vérifier le point de terminaison
/beans
la source
applicationContext.getBeanDefinitionNames () ne pas montrer les haricots qui sont enregistrés sans exemple BeanDefinition.
}
Sortie de la console
Comme vous pouvez le voir dans la sortie, les beans environment, systemProperties et systemEnvironment ne seront pas affichés à l'aide de la méthode context.getBeanDefinitionNames () .
Botte de printemps
Pour les applications Web Spring Boot, tous les beans peuvent être répertoriés à l'aide du point de terminaison ci-dessous.
}
la source
Tu pourrais essayer d'appeler
Ou activez la journalisation du débogage pour
org.springframework
. (Dans le démarrage du printemps, cela utilise un paramètre--logging.level.org.springframework=DEBUG
)la source
ListableBeanFactory
est une interface. Où trouverait-on une instance d'une classe étendant cette interface afin d'exécuter la méthodegetBeansOfType
ou toute autre méthode dans l'interface? Je vois queApplicationContext
cela le prolonge, mais votre exemple ne montre pas comment en acquérir un.@Autowired ListableBeanFactory listableBeanFactory
et vous en aurez un (le type d'implémentation ne devrait pas avoir d'importance)En utilisant,
spring-boot-starter-actuator
vous pouvez facilement accéder à tous les bean.Voici le processus de configuration:
Ajouter ci-dessous dans le fichier gradle:
Ajouter
management.security.enabled=false
dans votre fichier application.propertypoint de terminaison call / beans :
Après cette configuration, le printemps activera certains points de terminaison liés aux métriques. L'un de ses points de terminaison est / beans. Après avoir appelé ces points de terminaison, il fournira un fichier json contenant tous vos bean, y compris sa dépendance et sa portée.
Voici un exemple de fichier json:
Pour plus d'informations, visitez les liens ci-dessous:
J'espère que ceci vous aidera. Merci :)
la source
Voici une autre façon d'imprimer tous les noms de bean à partir du contexte de l'application Spring:
la source