endokのブログ

IT・プログラミングネタ

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