반응형
Spring에서는 빈의 생성과 소멸을 어노테이션으로 관리할 수 있다.
@PostConstruct
Spring은 빈 초기화 직후에 @PostConstruct이 달린 메서드를 한 번만 호출한다.
만약 초기화할 것들이 없는 경우에도 해당 메서드는 실행이 된다.
@PostConstruct가 달린 메서드는 모든 접근 제어자를 가질 수 있지만 static 메서드일 수는 없다.
Example
애플리케이션 구동 시 더미 데이터가 필요한 경우 - (근로)
해당 더미 관련 Service에서 관련 Repository 빈 초기화가 이루어진 후 @PostConstruct가 붙은 메서드가 실행되면서 더미데이터를 넣을 수 있다.
사실 이 전에 더미데이터 넣는 방법을 무조건 ApplicationRunner를 구현한 DataLoader에서만 이루도록 했었다.
하지만 @PostConstruct를 써서 더미데이터를 넣을 경우 관련된 서비스에서 더미 데이터 선언을 할 수 있고,
불필요하게 모든 repository를 끌고 오지 않고 해당 서비스에서 더미 관련 로직을 처리해줄 수 있다.
@PreDestroy
Spring이 애플리케이션 컨텍스트에서 빈을 제거하기 직전 @PreDestroy이 달린 메서드를한 번만호출한다.
즉 애플리케이션 컨텍스트에서 빈을 제거하기 전 해야할 작업이 있으면 해당 메서드에 정의하면 된다.
@PreDestroy가 달린 메서드는 모든 접근 제어자를 가질 수 있지만 static 메서드일 수는 없다.
참고자료
반응형
'스프링 부트' 카테고리의 다른 글
application.properties VS application.yml 그리고 YAML을 사용하면서 겪은 문제점 (0) | 2021.08.24 |
---|---|
S3를 사용하는 환경에서 LocalStack을 통한 통합 테스트 (2) | 2021.08.21 |
Logback과 로깅 전략 (0) | 2021.08.16 |
[ERROR] Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986 (0) | 2021.08.14 |
ApplicationEventPublisher 적용과 그 안에서의 삽질 (1) | 2021.08.14 |