더북(TheBook)

4.5.2 ApplicationContextAware 인터페이스 사용하기

ApplicationContextAware는 3장 끝부분의 depends-on 예제에서 스프링 구성으로 생성자나 수정자에 주입되지 않은 다른 빈이 필요할 때 어떻게 이를 가져올 것인가를 살펴볼 때 소개했습니다.

ApplicationContextAware 인터페이스를 사용하면 애플리케이션의 빈은 자신을 관리하는 ApplicationContext 인스턴스의 참조를 얻을 수 있습니다. 이 인터페이스를 만든 가장 중요한 이유는 예를 들어 애플리케이션 빈이 스프링의 ApplicationContext에 접근한 후 getBean() 메서드를 사용해서 다른 스프링 빈을 가져올 수 있게 프로그래밍할 수 있도록 하는 것입니다. 물론 빈을 협력 객체(collaborator)로써 전달해야 한다면 이 방법 대신 의존성 주입을 사용해야 합니다. 의존성 주입을 사용할 수 있는데도 의존성을 얻으려고 의존성 룩업 기반인 getBean() 메서드를 사용하면 빈이 불필요하게 복잡해지고 아무 이득 없이 프레임워크에 종속됩니다.

물론 ApplicationContext를 빈 룩업의 용도로만 사용하지는 않으며 다른 뛰어난 기능들도 많이 제공합니다. 그중 하나가 이전에 살펴본 기능으로, 모든 싱글턴 빈을 소멸시키고 각 빈에 소멸 직전에 통지를 하는 기능입니다. ‘4.4.6 셧다운 후크 사용하기’에서는 애플리케이션을 종료하기 전에 모든 싱글턴 빈을 소멸하도록 ApplicationContext에 알려줄 때 어떻게 셧다운 후크를 생성하는지 살펴봤습니다.

ApplicationContextAware 인터페이스를 사용하면 ApplicationContext에서 빈이 구성될 때 셧다운 후크를 자동으로 생성하고 구성할 수 있습니다. 다음은 자동으로 셧다운 후크를 생성하는 빈의 코드입니다.

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