@PostConstruct
- 의존성 주입이 이루어진 후 초기화를 수행하는 메서드
- @PostConstruct가 붙은 메서드는 클래스가 service를 수행하기 전에 발생, 이 메서드는 다른 리소스에서 호출되지 않는다해도 수행됨
장점
- 생성자(일반)가 호출 되었을 때, 빈(bean)은 아직 초기화 되지 않은 경우
(예를 들어, 주입된 의존성이 없음)
@PostConstruct를 사용하면, 빈(bean)이 초기화 됨과 동시에 의존성을 확인할 수 있다.
- bean lifecycle에서 오직 한 번만 수행된다는 것을 보장할 수 있다. (WAS가 올라가면서 bean이 생성될 때 딱 한 번 초기화함)
-> @PostConstruct를 사용하면 bean이 여러번 초기화되는 것을 방지할 수 있다.
예
@GetMapping("/members_dto")
public Page<MemberDto> listDto(Pageable pageable) {
return memberRepository.findAll(pageable).map(MemberDto::new);
}
@PostConstruct
public void init() {
for (int i = 0; i < 30; i++) {
memberRepository.save(new Member("user" + i, i));
}
}
- 페이징 처리를 확인하기 위해 DB에 데이터를 미리 생성
Reference
https://zorba91.tistory.com/223