Whiteship's Note

boolean containsBean(String name) 메소드 구현 살펴보기.

Spring/Mission : 2006. 10. 26. 11:52


BeanFactory 인터페이스에 있는 메소드의 구현을 살펴보겠습니다.

String[] getAliases(String name) 메소드는 name으로 참조 되는 bean의 다른 이름들 즉 별명들을 String 배열로 반환하는 메소드 입니다. name으로 넘겨진 값이별명 중에 하나였다면 그에 상응하는 bean의 원래 name과별명들을 같이 반환합니다. 이때 원래 name은 배열의 제일처음에 위치합니다. 이 메소드 또한 현재 BeanFactory에서해당하는 bean을 찾지 못한다면 부모 BeanFactory에서찾게 됩니다.

Best 시나리오 일때는 자기 자신의 favtory안에서 String type의 매개변수에 해당하는 bean을 찾을 겨우 입니다. 이때는 다음과 같은 메소드 호출 Stack으로 파악할 수 있습니다.


AbstractBeanFactory에 구현된 boolean containsBean(String)


containsLocalBean(String) 메소드


containsSingleton(String) 메소드 와 containsBeanDefinition(String) 메소드


자기 자시의 BeanFactory에서 찾지 못할 때는 부모 BeanFactory에서 찾게 됩니다. 아래는 그림은 containsBean 메소드의 구조를 도식화 한것입니다.


containsBean 메소드에 넘어온 매개변수를 originalBeanName 메소드의 인자로 전해주고(파란선) 그 결과 값을 다시 parentBeanFacory.containsBean(String) 메소드의 인자로 넘겨줍니다.(빨간선)
parentBeanFactory.containsBean(String) 이부분을 Stack 구조로 나타내면 다음과 같습니다.


getParentBeanFactory() 메소드


originalBeanName(String) 메소드


AbstractBeanFactory transformedBeanName(String) 메소드와BeanFactoryUtils에 있는 transformedBeanName(String) 메소드




ps : BeanFactory 인터페이스를 구현한 AstractBeanFactory에 있는 method들을 살펴보았습니다.
앞서 궁금해 했던 BeanFactory.FACTORY_BEAN_PREFIX 이 필드를 사용하는 것을 볼 수 있는데요. &를 생성하고자 하는 Bean name앞에 붙여서 getBean을 하게 되면 어떻게 되는건지 해봐야겠네요.

ps : 오타가 많은 듯 한데 찾기가 쉽지 않군요. ㅎㅎ;;;

top

  1. Favicon of https://springframework.tistory.com BlogIcon 영회 2006.10.26 00:44 신고 PERM. MOD/DEL REPLY

    조금 간결해졌으면 좋겠고.. ^^
    어떤 흐름으로 메소드가 호출되는지 볼 수 있으면 더 좋겠구나.

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2006.10.26 08:38 신고 PERM MOD/DEL

    네~ Simple.. and Visual

Write a comment.




: 1 : ··· : 8 : 9 : 10 : 11 : 12 : 13 : 14 :