더북(TheBook)

PostConstruct를 사용하여 인스턴스 생성 후 관리하기

이 절에서 설명한 것처럼 스테레오타입 애너테이션을 사용하면 스프링에 빈을 생성하고 해당 컨텍스트에 추가하도록 지시할 수 있다. 하지만 @Bean 애너테이션을 사용하는 것과 달리 인스턴스 생성은 완전히 제어할 수 없다. @Bean을 사용하면 스프링 컨텍스트에 추가한 각 Parrot 인스턴스의 이름을 정의할 수 있지만, @Component를 사용하면 스프링이 Parrot 클래스의 생성자를 호출한 후에는 어떤 것도 할 수 없다. 스프링이 빈을 생성한 직후에 몇 가지 명령을 실행하려면 어떻게 해야 할까? 이때는 PostConstruct 애너테이션을 사용할 수 있다.

스프링은 자바 EE에서 유래한 @PostConstruct 애너테이션을 가져와 사용한다. 이 애너테이션을 스프링 빈과 함께 사용하여 빈을 생성한 후 스프링이 실행하는 일련의 명령을 지정할 수 있다. 컴포넌트 클래스에서 메서드를 정의하고 해당 메서드에 @PostConstruct 애너테이션을 추가하면 생성자가 실행을 완료한 후 스프링이 해당 메서드를 호출하도록 지시할 수 있다.

pom.xml에 @PostConstruct 애너테이션을 사용하는 데 필요한 메이븐 의존성을 추가해 보자.

<dependency>
  <groupId>javax.annotation</groupId>
  <artifactId>javax.annotation-api</artifactId>
  <version>1.3.2</version>
</dependency>
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.