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);
};
}
}