IOC Container에 등록된 모든 Bean의 이름 가져와 출력하기
IOC Container에 등록된 모든 Bean의 이름을 가져오기 위해서는 AnnotationConfigApplicationContext의 beanDefinitionNames 프로퍼티를 사용하면 된다.
이를 사용하는 방법을 알아보기 위해 먼저 Configuration 파일을 다음과 같이 만들어 Bean이 blogName과 blogAge 두개 등록될 수 있도록 해보자.
@Configuration
class DefaultContainerConfiguration {
@Bean
fun blogName(): String {
return "KotlinWorld"
}
@Bean
fun blogAge(): Int {
return 3
}
}
그러면 이 Configuration 파일을 통해 만들어지는 IOC Container은 다음과 같은 모양이 된다.
이후 이 Configuration을 사용해 IOC Container을 만들고 해당 IOC Container에 등록된 모든 Bean의 이름을 출력해보자.
그렇게 하기 위해서는 context.beanDefinitionNames 프로퍼티를 호출해 모든 Bean의 이름을 Array<String> 타입으로 가져온 다음 각 Bean의 이름을 출력하면 된다. 코드는 다음과 같다.
fun main(args: Array<String>) {
val context = AnnotationConfigApplicationContext(DefaultContainerConfiguration::class.java)
val allBeanNames: Array<String> = context.beanDefinitionNames
allBeanNames.forEach {
println(it)
}
}
이제 이 코드를 실행해보면 다음과 같은 결과가 나오는 것을 볼 수 있다.
우리가 등록한 blogName과 blogAge가 Bean으로 등록되어 있는 것을 볼 수 있고, 우리가 만든 Configuration 도 Bean으로 등록된 것을 볼 수 있다. 그 위의 Bean들은 스프링 프레임웍에서 자동으로 등록하는 Bean이다.
여기까지 등록된 모든 Bean의 이름을 출력하는 방법을 알아봤다. 이어서 다음 글에서는 Bean의 이름을 커스텀하게 바꾸는 방법을 알아보자.
Code: GitHub
도움이 되셨다면 ⭐️를 눌러주세요!
반응형