4

I am using the below to display all spring beans in the context. How can I remove beans from the context?

 ConfigurableApplicationContext ctx = SpringApplication.run(ProxyApplication.class, args);
 for(String beanName:ctx.getBeanDefinitionNames()){
     System.out.println(beanName);
 }
Punter Vicky
  • 15,954
  • 56
  • 188
  • 315

1 Answers1

11

You can do it this way:

    ConfigurableApplicationContext ctx = SpringApplication.run(ProxyApplication.class, args);
    BeanDefinitionRegistry registry = (BeanDefinitionRegistry) ctx.getAutowireCapableBeanFactory();
    for(String beanName : ctx.getBeanDefinitionNames()){
        System.out.println(beanName);
        registry.removeBeanDefinition(beanName);
    }
Rae Burawes
  • 892
  • 7
  • 18
  • Apparently, you can't do it. See this issue: https://github.com/spring-projects/spring-framework/issues/29267 – Teodor Oct 06 '22 at 15:14