본문 바로가기

개발일기/Spring

[Spring]@PostConstruct와@PreDestory

728x90
반응형

@PostConstruct@PreDestroy는 스프링 프레임워크에서 사용되는 어노테이션이다. 이들은 빈의 초기화와 소멸 시점에 메서드를 실행하기 위해 사용된다.

 

  1. @PostConstruct: 이 어노테이션은 빈이 생성된 후에 초기화 작업을 수행해야 할 때 메서드에 지정된다. 이 어노테이션이 붙은 메서드는 빈의 생성자가 호출되고 종속성 주입이 완료된 후에 호출된다. 주로 빈의 초기화 작업이나 의존성 설정 등의 작업에 사용된다.
  2. @PreDestroy: 이 어노테이션은 빈이 소멸되기 전에 수행해야 할 작업을 명시하는 데 사용된다. 이 어노테이션이 지정된 메서드는 빈이 컨테이너에서 제거되기 전에 호출된다. 주로 빈이 종료되기 전에 자원을 정리하거나 상태를 저장하는 데 사용된다.

 

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

public class MyBean {

    // PostConstruct 어노테이션이 지정된 메서드
    @PostConstruct
    public void init() {
        System.out.println("MyBean initialized");
    }

    // PreDestroy 어노테이션이 지정된 메서드
    @PreDestroy
    public void cleanup() {
        System.out.println("MyBean is being destroyed");
    }
}

 

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {
    public static void main(String[] args) {
        // 스프링 컨테이너 생성
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
        // 컨테이너에 설정 클래스(MyConfig.class) 등록
        context.register(MyConfig.class);
        // 컨테이너 초기화
        context.refresh();

        // MyBean 빈 가져오기
        MyBean myBean = context.getBean(MyBean.class);

        // 스프링 컨테이너 종료
        context.close();
    }
}

 

# 위의 코드에서 AnnotationConfigApplicationContext는 스프링 컨테이너를 초기화하고, MyBean을 빈으로 등록한 후에 사용한다. 실행하면 init() 메서드가 먼저 호출되고, 컨테이너가 종료될 때 cleanup() 메서드가 호출된다.

728x90
반응형

'개발일기 > Spring' 카테고리의 다른 글

[Spring]ThreadLocal  (0) 2024.04.01
[Spring]로그 추적기  (0) 2024.04.01
[Spring]@autowired , @qualifier , @primary  (0) 2024.03.20
[Spring]@ComponentScan , @Component , @Autowired  (0) 2024.03.18
[Spring]싱클톤 사용시 주의사항.  (0) 2024.03.18