어떤 클래스에서 bean을 꺼낼(look up) 수 있는 factory가 필요하다면 BeanFactoryAware 인터페이스를 구현하거나.. 다른 방법도 있습니다.

 void setBeanFactory(BeanFactory beanFactory)

구현해야 할 메소드는 요고 하나 있습니다.

Reference에서는 이 인터페이스를 사용하는 것은 IoC답지 않고[footnote]Dependency Lookup은 IoC답지 않은 것으로 생각하는 것 갔습니다. 어떤 책에서는 IoC 중에 DL과 DI가 있고 DI중에 Setter Injection과 Costructor Injection, Method Injection이 있다고 써놨던 것 같은데.. 햇갈리네요.[/footnote] 소스코드가 Spring framwork에 종속성이 생기기 때문에 다른 방법을 사용한 예제를 보여 주고 있습니다.[footnote]ObjectFactoryCreatingFactoryBean 이것을 사용하여 설정 파일에서 DI를 사용하는 방법입니다.[/footnote]

3.3 맨 끝에서 Method Injection에 관한 부분에서 이게 필요한 상황이 나왔었습니다. 예를 들어 A가 singleton이고 B가 prototyp인데 A가 B를 가지고 있으면.. B는 prototype인데도 하나의 A가 한번만 만들어 지니까 A가 다른 bean에 참조 되거나 look up 됐을 때 마다 B가 새로 생기는게 아니라 기본에 만들어져있던 A를 계속 쓰게 되는 상황을.. BeanFactoryAware 인터페이스를 사용해서 해결할 수 있다고 했었습니다. 물론 그것 보다 더 좋은 방법은 Method Injection인데 아직 공부를 안해서 모르겠네요.

BeanFactoryAware 사용 예
ObjectFactoryCreatingFactoryBean 사용 예