더북(TheBook)

4.6 FactoryBean 사용하기

스프링을 사용하면서 만나게 되는 문제점 중 하나는 new 연산자로 간단히 생성할 수 없는 의존성을 어떻게 생성해 주입할 것인가입니다. 이 문제를 극복하려고 스프링은 기본으로 제공되는 스프링 구문(semantic)으로는 생성 및 관리할 수 없는 객체를 관리하기 위한 어댑터인 FactoryBean 인터페이스를 제공합니다. 흔히 사용하는 것은 아니지만 정적 팩터리 클래스로 접근해야 하는 객체처럼 new 연산자로 생성할 수 없는 객체를 생성할 때는 일반적으로 FactoryBean을 사용합니다. 간단히 말하면 FactoryBean은 다른 빈을 생성하는 팩터리 역할을 담당하는 빈입니다. FactoryBean은 일반적인 빈과 마찬가지로 ApplicationContext에서 구성하지만, 스프링이 FactoryBean 인터페이스를 사용해 의존성 요청이나 검색 요청에 응답할 때는 일반적인 빈과는 달리 FactoryBean 인스턴스를 반환하지 않습니다. 대신에 스프링이 FactoryBean.getObject() 메서드를 호출하여 반환받은 결과를 반환합니다.

FactoryBean은 스프링에서 큰 역할을 담당하는데 이 중 가장 눈에 띄는 사용 예는 9장에서 살펴볼 트랜잭션 프록시와 JNDI 컨텍스트에서 자동으로 리소스를 가져오는 것을 꼽을 수 있습니다. 하지만 FactoryBean이 스프링 내부 동작에만 유용한 것은 아니며 애플리케이션을 개발할 때도 유용하게 사용됩니다. FactoryBean을 사용하면 기본으로 제공되는 것보다 더 많은 리소스를 IoC를 사용해 관리할 수 있기 때문입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.