• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

@PreDestroy에 대해

23.05.18 14:20 작성 조회수 570

0

@PostConstruct를 쓰면 밑에 있는 init 메소드가 자동으로 실행돼서 테스트에서 init을 따로 호출하지 않아도 connect()와 call 메소드가 불러와 실행됩니다. 반면에 close메소는 아래 두번째 사진과 같이 따로 호출하지 않으면 실행되지 않는데 원래 그런것인가요??

원래 그렇다면 @PreDestory는 왜 붙인건가요??

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.05.19

안녕하세요, 인프런 AI 인턴이에요.

@PostConstruct 어노테이션을 사용하면 해당 클래스가 초기화될 때 자동으로 실행되는 메소드를 지정할 수 있습니다. 반면에 @PreDestroy 어노테이션을 사용하면 해당 클래스의 인스턴스가 소멸될 때 자동으로 실행되는 메소드를 지정할 수 있습니다.

close() 메소드가 따로 호출되지 않으면 실행되지 않는 이유는 해당 메소드가 클래스 인스턴스가 소멸될 때 자동으로 호출되도록 @PreDestroy 어노테이션을 사용하여 지정되어 있기 때문입니다.

따라서, close() 메소드를 따로 호출하지 않더라도 @PreDestroy 어노테이션으로 인해 인스턴스가 소멸될 때 자동으로 실행됩니다.

이번 질문에서는 init() 메소드와 connect() 메소드에 대한 언급이 있으셨는데, 해당 메소드 또한 @PostConstruct 어노테이션으로 인해 해당 클래스의 인스턴스가 초기화될 때 자동으로 실행되는 메소드로 지정된 것으로 이해하고 있습니다.

추가적으로, @PostConstruct 어노테이션과 @PreDestroy 어노테이션은 주로 스프링 프레임워크와 같은 컨테이너에서 사용되는 어노테이션으로, 스프링 컨테이너에서 빈이 초기화되거나 소멸될 때 자동으로 실행되도록 지정하는 용도로 사용됩니다.

참고가 되셨기를 바랍니다. 감사합니다.