스프링 부트
@PostConstruct와 @PreDestroy
newwisdom
2021. 8. 17. 21:27
반응형
Spring에서는 빈의 생성과 소멸을 어노테이션으로 관리할 수 있다.
@PostConstruct
Spring은 빈 초기화 직후에 @PostConstruct이 달린 메서드를 한 번만 호출한다.
만약 초기화할 것들이 없는 경우에도 해당 메서드는 실행이 된다.
@PostConstruct가 달린 메서드는 모든 접근 제어자를 가질 수 있지만 static 메서드일 수는 없다.
Example
애플리케이션 구동 시 더미 데이터가 필요한 경우 - (근로)
해당 더미 관련 Service에서 관련 Repository 빈 초기화가 이루어진 후 @PostConstruct가 붙은 메서드가 실행되면서 더미데이터를 넣을 수 있다.
사실 이 전에 더미데이터 넣는 방법을 무조건 ApplicationRunner를 구현한 DataLoader에서만 이루도록 했었다.
하지만 @PostConstruct를 써서 더미데이터를 넣을 경우 관련된 서비스에서 더미 데이터 선언을 할 수 있고,
불필요하게 모든 repository를 끌고 오지 않고 해당 서비스에서 더미 관련 로직을 처리해줄 수 있다.
@PreDestroy
Spring이 애플리케이션 컨텍스트에서 빈을 제거하기 직전 @PreDestroy이 달린 메서드를한 번만호출한다.
즉 애플리케이션 컨텍스트에서 빈을 제거하기 전 해야할 작업이 있으면 해당 메서드에 정의하면 된다.
@PreDestroy가 달린 메서드는 모든 접근 제어자를 가질 수 있지만 static 메서드일 수는 없다.
참고자료
반응형