怎么查看 Ioc 容器包含指定 bean
问题描述
今天工作中遇到了一个场景,通过读取 yml 配置 bean 信息,如果容器中包含指定 bean 则进行下一步处理,否则先创建 bean,在进行下一步操作,脑子一下子不动了,不知如何判断 容器中是否含有指定 bean
判断方法
类中注入 ApplicationContext 通过 bean 名称判断就行了
1、写三个bean,注入其2
public class Dog { }
@Component public class EMP_Test { }
@Component public class Cat { }
2、找一个方法拿到 ioc 容器遍历即可
@Slf4j @RestController public class HelloController { @Resource private ApplicationContext applicationContext; @GetMapping("/hi1") private String hi1() { String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { System.out.println(beanDefinitionName); if (beanDefinitionName.equalsIgnoreCase("CAT") || beanDefinitionName.equalsIgnoreCase("EMP_TEST")) { System.out.println("------------------------------------"); } } return "welcome to spring's world "; } }