Whiteship's Note

Object getBean(String name) 메소드 구현 살펴보기-중간 부분

Spring/Mission : 2006.10.30 13:07


public Object getBean(String name) throws BeansException {
       return getBean(name, null, null);
}

위에서 보시다시피 getBean(String) 메소드에서 호출하는
public Object getBean(String name, Class requiredType, final Object[] args) throws BeansException
이 메소드의 중간 부분을 살펴 볼 차례입니다.(이 메소드의 윗부분은 전에 살펴 보았습니다.)

코드보기

이 부분을 크게 두 부분으로 나누어 볼 수 있겠습니다.

먼저 bean definiton을 찾는 부분(현재 factory에 없으면 부모 팩토리에서 찾는 부분)과 그 이후에 bean을 생성하는 부분입니다.

bean을 생성하는 부분은 다시 세 부분으로 나누어 볼 수 있겠습니다.
bean의 scope이 singleton 방식일 때 생성하는 부분 prototype일 때 생성하는 부분 그리고 그 이외의 scope일 때 bean을 생성하는 부분입니다.

bean difinition을 찾는 부분에서 결과물은 mergedBeanDefinition 변수 입니다. 이 변수를 만들기 위해 호출되는 getMergedBeanDefinition() 메소드를 살펴보겠습니다.

getMergedBeanDefinition() 메소드

checkMergedBeanDefinition() 메소드

bean을 생성하는 부분에서 사용되는 getObjectForBeanInstance() 메소드를 살펴보겠습니다.

getObjectForBeanInstance()메소드

spring 2.0에서는 singleton과 prototype이 외에 session을 비롯한 세개의 scope이 더 추가 되었는데요 그러한 부분이 마지막 else문에서 다뤄지고 있습니다. 그런데 prototype이라는 단어가 들어가는 메소드를 호출하는 부분이 많이 보이고 있으며.. 왜 if (mergedBeanDefinition.isSession())과 같은 코드가 보이지 않을까요?

spring 2.0 referecnce에서 bean scope에 관한 부분입니다. 이 부분을 좀 더 살펴봐야겠습니다.


top

Write a comment.