105 votes

Imprimer tous les beans Spring chargés

Existe-t-il un moyen d'imprimer tous les beans Spring chargés au démarrage ? J'utilise Spring 2.0.

95voto

Bozho Points 273663

Oui, contactez ApplicationContext et appelez .getBeanDefinitionNames()

Vous pouvez obtenir le contexte en :

  • mise en œuvre de ApplicationContextAware
  • l'injecter avec @Inject / @Autowired (après 2,5)
  • utiliser WebApplicationContextUtils.getRequiredWebApplicationContext(..)

Connexe : Vous pouvez également détecter l'enregistrement de chaque bean en enregistrant un bean BeanPostprocessor . Il sera notifié pour chaque haricot.

69voto

Akceptor Points 854
public class PrintBeans {
    @Autowired
    ApplicationContext applicationContext;

    public void printBeans() {
        System.out.println(Arrays.asList(applicationContext.getBeanDefinitionNames()));
    }
}

22voto

vanfgh Points 221

Imprimer tous les noms de bean et ses classes :

 package com.javahash.spring.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class HelloWorldController {

    @Autowired
    private ApplicationContext applicationContext;

    @RequestMapping("/hello")
    public String hello(@RequestParam(value="key", required=false, defaultValue="World") String name, Model model) {

        String[] beanNames = applicationContext.getBeanDefinitionNames();

        for (String beanName : beanNames) {

            System.out.println(beanName + " : " + applicationContext.getBean(beanName).getClass().toString());
        }

        model.addAttribute("name", name);

        return "helloworld";
    }
}

19voto

vietnem Points 169

Avec Spring Boot et le démarreur de l'actionneur

 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

vous pouvez vérifier le point de terminaison /beans

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X