打印所有加载的 Spring bean - Spring Boot

新手上路,请多包涵

我怎样才能知道作为我的 Spring Boot 应用程序的一部分加载的所有 bean 的名称?我想在 main 方法中有一些代码来打印服务器启动后加载的 bean 的详细信息。

原文由 Punter Vicky 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
1 个回答

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

正如评论中提到的 @Velu ,这不会列出手动注册的bean。

如果你想这样做,你可以使用 getSingletonNames() 。但小心点。此方法仅返回已实例化的 bean。如果一个 bean 还没有被实例化,它 不会getSingletonNames() 返回。

原文由 Yannic Bürgmann 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题