2015-10-26 1 views
12

Comment puis-je connaître les noms de tous les beans chargés dans mon application de démarrage Spring? Je voudrais avoir du code dans la méthode principale pour imprimer les détails des beans qui sont chargés une fois le serveur démarré.Imprimer tous les beans Spring chargés - Spring Boot

+0

Copie possible de [Comment puis-je obtenir une liste de beans instanciés à partir du printemps?] (Http://stackoverflow.com/questions/14829258/how-can-i-get-a-list-of-instantiated-beans -from-spring) –

Répondre

25

Comme le montre le guide de démarrage du printemps-boot: https://spring.io/guides/gs/spring-boot/

@SpringBootApplication 
public class Application { 

    public static void main(String[] args) { 
    SpringApplication.run(Application.class, args); 
    } 

    @Bean 
    public CommandLineRunner commandLineRunner(ApplicationContext ctx) { 
    return args -> { 

     System.out.println("Let's inspect the beans provided by Spring Boot:"); 

     String[] beanNames = ctx.getBeanDefinitionNames(); 
     Arrays.sort(beanNames); 
     for (String beanName : beanNames) { 
     System.out.println(beanName); 
     } 
    }; 
    }  
} 
+0

Merci, ça aide! –

7

Puis-je suggérer à l'aide de l'actionneur? Il fournit plusieurs points de terminaison, y compris /beans qui répertorie tous les beans dans l'application. Vous dites "une fois que le serveur est démarré", c'est donc une option pour les applications web.

Pour configurer l'actionneur

https://spring.io/guides/gs/actuator-service/

Liste des points de terminaison dans l'actionneur

http://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html

+1

Merci d'avoir fourni une option différente également. Cependant, l'approche fournie par Yannic Klem a fonctionné. –

3

Eh bien, bien, cette question est déjà répondu, je st Je veux fournir une réponse qui est une variante Java 8 :)

Arrays.asList(context.getBeanDefinitionNames()).stream().sorted().forEach(System.out::println); 

Permet de faire Java 8 !!!

0

En fait, je recommanderais de créer cette classe en dehors de la modification de votre @SpringBootApplication. Ainsi, Spring Boot chargera cette classe et s'exécutera juste après le chargement du contexte. Ensuite, vous pouvez simplement supprimer le fichier, et tout est clair.