Springで定義済のBean名一覧を出力する
SpringBootはSpringのBean設定を隠蔽してくれているのだが、SpringBoot側で定義しているBeanをInjectionしたいときにはどういったBeanが定義済なのかわからず困る。
定義済のBean名をすべて出力する方法を調べたのでメモ。
方法は下記の通り。
1. BeanFactoryAwareをimplementsして、BeanFactoryを取得する。
2. BeanFactoryをDefaultListableBeanFactoryにキャストして、getBeanDefinitionNamesメソッドを利用する。
Controllerで実装した場合の例はこのようになる。
@Controller public class HelloController implements BeanFactoryAware { private DefaultListableBeanFactory beanFactory; @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { this.beanFactory = (DefaultListableBeanFactory)beanFactory; } @RequestMapping(value = "/page1") public String page1() { for (String name : beanFactory.getBeanDefinitionNames()) { System.out.println(name); } return "page1"; } }