Comment afficher tous les beans chargés par Spring Boot
Dans Spring Boot, vous pouvez utiliserappContext.getBeanDefinitionNames()
pour obtenir tous les beans chargés par le conteneur Spring.
1. CommandLineRunner comme interface
Application.java
package com.example; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ApplicationContext; import java.util.Arrays; @SpringBootApplication public class Application implements CommandLineRunner { @Autowired private ApplicationContext appContext; public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } @Override public void run(String... args) throws Exception { String[] beans = appContext.getBeanDefinitionNames(); Arrays.sort(beans); for (String bean : beans) { System.out.println(bean); } } }
Sortie
Console.java
application customerRepository customerRepositoryImpl dataSource dataSourceInitializedPublisher dataSourceInitializer dataSourceInitializerPostProcessor emBeanDefinitionRegistrarPostProcessor entityManagerFactory entityManagerFactoryBuilder hikariPoolDataSourceMetadataProvider jdbcTemplate jpaContext //...
2. CommandLineRunner en tant que bean
Différentes façons d'imprimer les beans chargés.
Application.java
package com.example; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import java.util.Arrays; @SpringBootApplication public class Application { public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } @Bean public CommandLineRunner run(ApplicationContext appContext) { return args -> { String[] beans = appContext.getBeanDefinitionNames(); Arrays.stream(beans).sorted().forEach(System.out::println); }; } }