Spring Boot 문법

[다양한 어노테이션] POJO 의 초기화 / 폐지 순서 정하기

여우비오냐 2024. 4. 4. 20:52

➤ 언제 사용할까?

=> 파일을 열거나 끝났을 때 닫아야하는 경우, 네트워크 DB에 접속하거나 접속을 끊는 경우, 메모리를 할당하거나 할당을 해제 하는 경우 등등 특정 초기화/폐기 작업을 요하는 경우

 

 

➤  다음과 같은 다양한 방법이 있음!

 

  1. @Bean 정의부에서 initMethod, destroyMethod 속성

 

  • Bean 생성 이전에 openFile 메소드, 폐기 직전에 closeFile 메소드를 각각 실행하게 된다. 

 

  1. @PostConstruct, @PreDestroy

Bean 설정 파일이 아닌 POJO 클래스 내에 Bean을 정의할때 사용 (@Component)

 

    1. @Lazy

Spring은 애플리케이션 시작과 동시에 POJO 를 초기화한다

그런데 모든 POJO 클래스를 시작 시점에 시작하면 필요없는 리소스가 집중 되게 된다. 

따라서 네트워크 접속, 파일 처리등 무거운 작업을 처리하는 POJO 는 느긋한 초기화가 어울린다. 

@Lazy 를 붙인 POJO는 애플리케이션이 요구하거나 다른 POJO가 참조하기 전까진 초기화되지 않는다.

위 코드 실행 결과

 

 

  1. @DependsOn
  • 초기화 순서를 보장한다. (Race condition 을 예방)

userList Bean 보다 showBanner Bean이 무조건 먼저 생성 된다.